Steps for building packages in CBS
This article describes the process of building packages for SCLo SIG. General information about build system are available at https://wiki.centos.org/BrianStinson/GitBranchesandKojiTags
1. Creating tags and targets
Creating tags and build targets is achieved by requesting those on bugs.centos.org like this: https://bugs.centos.org/view.php?id=9661
The important information that need to be specified are:
- dependencies on other SCLs (if there are some), just list them, because these need to be made available in the buildroot
- which centos versions the collections will be build for (6 or 7 or both)
which namespace to use -- either it can be 'rh' (this is only for the collections that are part of RHSCL portfolio), or sclo namespace, which is for other community developed collectoins
After that, someone from CentOS creates the tags/targets and updates the bug report. It may take some time (max. days), since guys in CentOS infrastructure are usually very busy.
Once tags/targets are created, users are able to build the packges by submitting SRPMs either for scratch builds (for testing) or regular builds. The whole process of building one image is described at https://wiki.centos.org/HowTos/CommunityBuildSystem.
2. First SCL builds
The following is example of workflow for building a simple SCL called rh-postgresql94, that consists of two packages: rh-postgresql94 (meta package) and rh-postgresql94-postgresql.
First, we need to add the metapackage to the tag and build it:
$> cbs add-pkg sclo6-rh-postgresql94-rh-candidate --owner=sclo rh-postgresql94 $> cbs build sclo6-rh-postgresql94-rh--el6 rh-postgresql94-2.0-9.el6.src.rpm
Once metapackage is built, we need to wait few minutes until repository is regenerated. Then, we can add the actual package with database to the tag and build it:
$> cbs add-pkg sclo6-rh-postgresql94-rh-candidate --owner=sclo rh-postgresql94-postgresql $> cbs build sclo6-rh-postgresql94-rh--el6 rh-postgresql94-postgresql-9.4.5-1.el6.src.rpm
Once we're able to push packages to testing, we do it this way:
$> cbs add-pkg sclo6-rh-postgresql94-rh-testing --owner=sclo rh-postgresql94 rh-postgresql94-postgresql $> cbs tag-pkg sclo6-rh-postgresql94-rh-testing rh-postgresql94-2.0-9.el6 rh-postgresql94-postgresql-9.4.5-1.el6
Finally, to tag packages to release repository, we do it this way:
$> cbs add-pkg sclo6-rh-postgresql94-rh-release --owner=sclo rh-postgresql94 rh-postgresql94-postgresql $> cbs tag-pkg sclo6-rh-postgresql94-rh-release rh-postgresql94-2.0-9.el6 rh-postgresql94-postgresql-9.4.5-1.el6
Then we need to ask for signing and releasing packages by reporting a bug report like this: https://bugs.centos.org/view.php?id=9838 The important information that need to be specified are:
- which collections need to be released
- which centos versions the collections will be build for (6 or 7 or both)
which namespace to use -- either it can be 'rh' (this is only for the collections that are part of RHSCL portfolio), or sclo namespace, which is for other community developed collectoins
After this, any package that will be tagged with -release tag, will be added to the official repository under http://mirror.centos.org/centos-7/7/sclo/x86_64/