Skip to main content
Builders

Builders

This page describes how Cinc packages are built for each platform, for people maintaining or contributing to the build infrastructure. The supported platforms and the policy for adding and dropping them are on Supported platforms.

All builds run as GitLab CI jobs in the cinc-project group, on runners hosted by the Oregon State University Open Source Lab. Every builder first installs the omnibus toolchain, which provides the Ruby, compilers and packaging tools the product builds use.

Builders by platform

PlatformRuns onRunner tagsProvisioned by
Linux (AlmaLinux, Rocky, Debian, Ubuntu, Amazon Linux, SLES)Docker containers on shared Linux runnersdocker-x86_64, docker-x86_64-v3, docker-aarch64, docker-aarch64-v8.2-a, docker-ppc64le, docker-ppc64le-p9, docker-s390x, docker-riscv64docker-images (cincproject/omnibus-<distro>:<version>)
Windowscincproject/omnibus-windows container (Server Core ltsc2022, process isolation) on a Windows Server VM in OpenStackwindows-docker; packages are tested on windows-x64-package-testingdocker-images omnibus-windows/
macOS, Apple SiliconParallels VMs on Apple Silicon Macs, one VM per macOS versionmacos-<version>-aarch64cinc-omnibus cookbook
macOS, IntelVMware Fusion VMs on Intel Macs, one VM per macOS versionmacos-<version>cinc-omnibus cookbook
FreeBSDVMs in OpenStack, one per FreeBSD major versionfreebsd-<version>cinc-omnibus cookbook
Cinc Server test hostsShort-lived OpenStack VMs created with Vagrant for each test jobcincproject/vagrant image; jobs share openstack-1 to openstack-4 resource groupsthe server and cinc-server repos’ Vagrantfile

Linux container images

  • The cincproject/omnibus-* images are built in docker-images with docker buildx bake. Each image runs the cinc-omnibus cookbook’s builder setup, so the container has the same packages and toolchain as a VM builder.
  • SLES images are built on SUSE’s free SLE Base Container Images (registry.suse.com/bci/bci-base), which need no registration. When SUSE releases a new minor version (for example SLES 16.1), the image moves to it.
  • The omnibus toolchain itself is built on the plain distribution images (almalinux:10, registry.suse.com/bci/bci-base:15.7, and so on), not on the omnibus-* images, so it only depends on what a fresh install provides.

Job and cache names

Package and test jobs are named package:<os>-<version>:<arch> and test:<os>-<version>:<arch>. A few names differ from the distribution name for historical reasons:

  • centos-<N> jobs build on AlmaLinux and publish to el/<N>.
  • opensuse-<N> jobs build on the SLES images and publish to sles/<N>.

Adding a builder

  1. Check the new release is on endoflife.date and meets the add policy.
  2. Linux: add a target to the distribution’s docker-bake.hcl in docker-images and publish the image. macOS, FreeBSD: create the VM, converge it with the cinc-omnibus cookbook, and register a GitLab runner with the macos-<version>[-aarch64] or freebsd-<version> tag. For FreeBSD, start at the release’s BETA.
  3. Add the platform to omnibus-toolchain and release it, so omnitruck.cinc.sh serves a toolchain for the new version.
  4. Add package: and test: jobs (plus cleanup: for macOS) and the deploy dependency in each product, then ship it in the product’s next release.
  5. Update Supported platforms.

Retiring a builder

  1. Remove the platform’s package:, test: and cleanup: jobs, the deploy dependencies and any cache keys from every supported release line.
  2. Remove it from omnibus-toolchain.
  3. Once no supported line builds it, remove the docker-images target, or unregister the runner and shut down the VM.
  4. Update Supported platforms.

Keeping builders healthy

  • Keep FreeBSD and macOS VMs on a supported point release of their OS. FreeBSD point releases go EOL a few months after the next one ships, even while the major version is still supported.
  • Re-converge VM builders with the cinc-omnibus cookbook after OS or runner upgrades rather than changing them by hand.
  • Rebuild the container images when their base images change, and pin products to a dated tag where they need a stable builder (as Windows does with BUILDER_IMAGE_TAG).