Build Systems overview
Build Systems overview¶
To build artifacts that will be released/pushed to the mirror network, CentOS Project relies on distributed build systems, mostly :
While reimzul is still being used for CentOS Linux 7 rpm builds, koji is now the one being used for CentOS Linux 8 and all Stream releases (but different environments)
RPM packages built by/for Special Interest Groups on our Community Build Service are also built on a koji instance, different from the one[s] used to build CentOS Linux/Stream distributions.
We adviced you to read upstream koji documentation to have details of all needed components and how they can be combined all together to be able to build/distribute packages, but here is a quick overview :
- kojihub/kojiweb : this is the main component, itself needing:
- authentication system in place (using either TLS/x509 certificates of kerberos tickets)
- postgresql database access : to store build results, activity, etc
- NFS storage: to store all builds logs and rpm packages and composed repositories
- httpd running with proper TLS certificates to encrypt traffic between hub and builders
- kojid : multiple builders, responsible to pick tasks (on the hub), and then use mock to build rpm packages and send results back to the kojihub
- depending if one of these nodes is also in the
createrepo
channel, it will itself RW rights on the NFS volume to be able to update repodata after some builds
- depending if one of these nodes is also in the
Now you can read other sub-sections about dedicated koji and some specific notes around these implementations
It's through worth knowing that all koji enviroments (almost) are deployed from the same Ansible roles (but with different settings, per different inventory or group variables)
Some links to ansible roles:
- kojihub
- kojid
- nfs-server
- (only used for SIGs)stylo