Skip to content
This repository was archived by the owner on Sep 23, 2024. It is now read-only.

Release Process

Carl George edited this page May 30, 2020 · 2 revisions

Testing Repository

Once a build is complete, the next steps take place on one of the origin servers. There are currently two servers, and you can use either of them to publish packages. Once logged in to an origin server, switch to the rpmdev user. This user has all the permissions, configurations, and helper scripts that you need.

Since we will be manipulating the repository, we must disable the server we are using in the load balancers.

node-disable

Use this script to download the RPMs from the most recent Cirrus build for a package.

cirrus-get <PACKAGE NAME>

Sign the RPMs. IUS uses different keys for EL6 and EL7, so adjust this command if needed.

rpmsign --define '_gpg_name IUS (7) <dev@ius.io>' --addsign *el7*.rpm

We use the uvalde tool to make repository curation easier. Import the signed RPMs to the appropriate testing repository. Again, adjust this command if you are working with EL6 packages.

uvalde add --repo ius-testing-7 *el7*.rpm

Sync the content to the other origin server. If you are on origin1, you need to sync to origin2, and vice versa.

sync-ius-to-origin2

Invalidate the cache of repodata of the testing repository on the CDN.

cdn-invalidate-repodata-testing

Finally, re-enable the server we are using in the load balancers.

node-enable

Main Repository

Packages typically stay in the testing repository for one week before being promoted to the main repository. We don't have a karma system like Fedora, but packages can be promoted earlier or later depending on the circumstance. In particular, we try to publish to main after just a few days if the update contains an important bug or security fix. We'll also promote early if users provide feedback that the update works as expected. Many of these steps will be similar to publishing to the testing repository. Once again we will perform these tasks as the rpmdev user on one of the origin servers.

Since we will be manipulating the repository, we must disable the server we are using in the load balancers.

node-disable

Uvalde allows us to move all packages from a build between repositories by referencing the NVR (name-version-release) of the SRPM. Before starting, list the current NVRs either by package name or by repository (or both).

uvalde list --name <PACKAGE NAME>
uvalde list --repo ius-testing-7
uvalde list --repo ius-testing-7 --name <PACKAGE NAME>

Move the NVRs you desire from the testing repository to the main repository. Again, adjust this command if you are working with EL6 packages.

uvalde move --from ius-testing-7 --to ius-7 <NVR>...

Sync the content to the other origin server. If you are on origin1, you need to sync to origin2, and vice versa.

sync-ius-to-origin2

Invalidate the cache of repodata of the main and testing repositories on the CDN. Due to how the API works, the second command will not be able to execute immediate, but the helper script has a built in retry with delay.

cdn-invalidate-repodata-main
cdn-invalidate-repodata-testing

Finally, re-enable the server we are using in the load balancers.

node-enable

Clone this wiki locally