Generation of RPMs
Rationale#
Some clients of O2 software need to use RPMs to deploy O2 software and its dependencies. We support two kind of RPM builds:
- Parallel installable RPMs, where the version of the packages is actually part of the name, allowing parallel installation a-la CVMFS.
- Updatable RPMs, which behave like common RPMs for Centos / RHEL.
The RPM creation is not a rebuild of the tarballs which are usually deployed on CVMFS,
but a mere repackaging of the tarballs, via the same script which does the publishing
on CVMFS. The script itself is called aliPublish and as usual it's part of the
alisw/ali-bot repository.
For the RPM case, in particular, the script runs in Nomad as a publish-rpm-* job.
The script runs asynchrounously and publishes packages as specified by the configurations for parallel and updateable RPMs.
Nomad job management#
Just like CI and Jenkins builders, RPM publishers are configured as templated Nomad jobs.
They are declared using one YAML file for each architecture.
For instance, for the Alma 8 RPMs, see ci-jobs/rpm-creation/el8.yaml:
This declares the architecture for which RPMs are created as arch, and the configuration files from ali-bot/publish/ to use as configs.
Updates to aliPublishS3 or the configuration files are picked up automatically between runs.