This document describes how the Copr projects for Foreman are created and how to build packages in them.
We've created two Copr projects.
- @theforeman/foreman-nightly - For all fedora packages and non-SCL epel packages
- @theforeman/tfm-foreman-nightly - For SCL packages
- See
Settings -> epel-7-x86_64 -> edit
for the chroot configuration
- See
When you open Monitor
tab of those projects, you can see what packages are built here and in which chroots.
We used categories from tito.props
of the foreman-packaging repo to determine which package should go where. Based on that we've re-built all packages from [foreman-nightly-fedora24]
and [foreman-plugins-nightly-fedora24]
into the @theforeman/foreman-nightly for only Fedora chroots.
Into same project we've re-built all packages from [foreman-nightly-nonscl-rhel7]
and [foreman-plugins-nightly-nonscl-rhel7]
, but only into epel7 chroot.
Packages from categories [foreman-nightly-rhel7]
and [foreman-plugins-nightly-rhel7]
were built as software collection into @theforeman/tfm-foreman-nightly.
I suggest you to add tito releasers in following manner.
[copr]
releaser = tito.release.CoprReleaser
project_name = @theforeman/foreman-nightly
[copr-fedora]
releaser = tito.release.CoprReleaser
project_name = @theforeman/foreman-nightly
copr_options = -r fedora-24-x86_64 -r fedora-25-x86_64 -r fedora-26-x86_64 -r fedora-rawhide-x86_64
[copr-epel]
releaser = tito.release.CoprReleaser
project_name = @theforeman/foreman-nightly
copr_options = -r epel-7-x86_64
[copr-tfm]
releaser = tito.release.CoprReleaser
project_name = @theforeman/tfm-foreman-nightly
builder.scl = tfm
With such you can easily manage all of your package categories.
When you open a package directory from packaging repo, submit its build into Copr by using one of the following commands
tito release copr
tito release copr-fedora
tito release copr-epel
tito release copr-tfm
For freezing packages in a particular version, I would recommend a Copr forking feature. Possible scenarios
- You might want to create a repo with stable packages. E.g. fork
foreman-nightly
project asforeman-stable
and at times fork new packages from the original project into it. - You might want to freeze a project for a specific distro. E.g. fork
tfm-foreman-nightly
astfm-foreman-el7
and let it live while continue building in the original project.
In case that you want to rebuild a larger number of packages at once, you might consider copr-rebuild-tools. See how I used them for Foreman.