Blob Blame History Raw
# Build Systems overview

To build artifacts that will be released/pushed to the mirror network, CentOS Project relies on distributed build systems, mostly :

  * [Koji](https://pagure.io/koji)
  * [reimzul](/buildsys/reimzul/)

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](/buildsys/koji-cbs/) 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 

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](https://github.com/centos/ansible-role-kojihub)
  * [kojid](https://github.com/centos/ansible-role-kojid)
  * [nfs-server](https://github.com/centos/ansible-role-nfs-server)
  * (only used for SIGs)[stylo](https://github.com/centos/ansible-role-stylo)