Updated on: 2022-01-20
Making an oVirt release
The purpose of this document is to provide instructions on how to prepare a release for the oVirt project following the transition to external providers for the git hosting and build execution.
During the development of the next oVirt release, patches are being verified using GitHub Actions.
We also have oVirt System Tests for gating but haven’t integrated them into GitHub Actions yet.
Once a PR is merged, the packages are being built by COPR infrastructure within the ovirt/ovirt-master-snapshot project.
Manual and automated testing can then be done using the snapshot composes provided by COPR.
Instructions on how to get your package added to this flow are provided here:
Pre release phase
A pre release (alpha, beta, release candidate) should be built from tagged content. In order to do that we are going to use the CentOS Community Build Service (CBS).
Package maintainers must have a CentOS Account or a Fedora Account, which were unified in the middle of 2021 to use the same account system.
In order to build for oVirt you need to be added to the CBS for which you need to join the CentOS Virtualization SIG. You can do that by attending a Virt SIG IRC meeting or asking on the CentOS Virt mailing list.
Please note that if you want to ship oVirt packages in other distributions, you’ll need to get permissions there. For example, if you want to ship for Fedora, you need to be a package owner on the Fedora Build System.
At the time of writing, the oVirt project is focusing only on CentOS Stream.
The build process on the Community Build Service is documented on the CentOS website.
A typical build is done by taking a src.rpm from the COPR ovirt/ovirt-master-snapshot Builds and rebuilding with:
# This builds a scratch (just a test) build for CentOS Stream 9 for oVirt 4.5 cbs build --scratch virt9s-ovirt-45-el9s <your package .src.rpm> # This is for CentOS Stream 8: cbs build --scratch virt8s-ovirt-45-el8s <your package .src.rpm> # If the build goes through fine, you can do a real build # CentOS Stream 9: cbs build virt9s-ovirt-45-el9s <your package .src.rpm> # CentOS Stream 8: cbs build virt8s-ovirt-45-el8s <your package .src.rpm>
Once the builds complete it will be tagged as a candidate to be released as
virt8s-ovirt-45-candidate (for CentOS Stream 8) or
virt9s-ovirt-45-candidate (for CentOS Stream 9).
In order to publish the build you need to tag it for testing:
# CentOS Stream 8 cbs tag virt8s-ovirt-45-testing <your build without the trailing '.src.rpm'> # Example: cbs tag virt8s-ovirt-45-testing ovirt-hosted-engine-ha-2.4.10-1.el8
This will publish the build under the https://buildlogs.centos.org/centos/8-stream/virt/ repository.
# CentOS Stream 9 cbs tag virt9s-ovirt-45-testing <your build without the trailing '.src.rpm'> #example: cbs tag virt9s-ovirt-45-testing ovirt-hosted-engine-ha-2.4.10-1.el9
This will publish the build on https://buildlogs.centos.org/centos/9-stream/virt/.
Once the content in testing has been properly verified and considered good to be released for general availability, the release manager needs to tag the builds for release:
# CentOS Stream 8 cbs tag virt8s-ovirt-45-release <build without the trailing '.src.rpm'> #example: cbs tag virt8s-ovirt-45-release ovirt-hosted-engine-ha-2.4.10-1.el8
This will publish the build on the http://mirror.centos.org/centos/8-stream/virt/ repository and to CentOS mirrors.
# CentOS Stream 9 cbs tag virt9s-ovirt-45-release <build without the trailing '.src.rpm'> # Example: cbs tag virt9s-ovirt-45-release ovirt-hosted-engine-ha-2.4.10-1.el9
This will publish the build on http://mirror.stream.centos.org/SIGs/9-stream/virt/ and to CentOS mirrors.
Release notes preparation
Release notes are auto-generated from git logs using scripts and config files stored in the oVirt/releng-tools repository.
Please follow the instructions on the oVirt Release Engineering Tools documentation. Remember that the release config file is going to be used only to deliver content which couldn’t build on CentOS Community Build Service (CBS). The milestone config is the one used for generating the release notes.
Once ready, the notes can be automatically generated with
release_notes_git.py on the command line like:
# this assumes milestone/ovirt-4.5.0.conf being already populated # https://github.com/oVirt/releng-tools/blob/master/milestones/ovirt-4.5.0.conf ./release_notes_git.py --git-basedir /var/tmp/release-cache --contrib-project-list ovirt-4.5.0 >notes.md
Once ready to announce, the release manager must ensure the announcement is sent:
To the oVirt Blog
To the relevant mailing list:
To social media:
To local communities:
- LinkedIn oVirt Italia
- Facebook oVirt India
- Facebook oVirt Italia
- Facebook oVirt Korea
- Facebook oVirt Malaysia
- Facebook oVirt Myanmar
- Facebook oVirt Philippines
Missed something? Please add!
A typical announcement for social media:
The #oVirt project community is pleased to announce the general availability of the new stable release of the #opensource #virtualization solution for your entire enterprise: oVirt <new version>. Read more about it on <link to announcement blog post>.
Typical blog post: https://blogs.ovirt.org/2022/01/ovirt-4-4-10-is-now-generally-available/
Try contacting our Press Plan Contacts to get press coverage.