The aos-cd-jobs repository is a Groovy-based infrastructure project that backs Jenkins jobs across multiple Jenkins masters for OpenShift Container Platform development and release management. It serves as the central configuration and orchestration point for continuous integration and continuous delivery pipelines used by the OpenShift engineering team, with strong connections to related Kubernetes and container projects through overlapping contributors from kubernetes/kubernetes, containers/buildah, and kcp-dev/kcp.
The repository is organized into several distinct functional areas. The scheduled-jobs directory contains pipeline definitions for jobs that run on fixed schedules, including build/ose which runs daily to build OCP 3.6 for integration test environments, and build/t-th which executes on Tuesdays and Thursdays for specific OCP builds. This separation allows jobs to be enabled or disabled without modifying source code. The jobs directory contains the primary Jenkins pipeline definitions indexed by a Continuous Infrastructure Jenkins instance. These jobs are automatically branched from Jenkinsfiles in the master branch through a sophisticated system using pruner.py and updater.py scripts. The pruner.py script removes branches for obsolete jobs while updater.py creates and updates branches for existing jobs. Each branch is an orphan branch containing the master branch contents with a specific job directory copied to the root and the jobs directory removed, enabling isolated pipeline execution.
Key build jobs include build/ocp for OCP 3.7 with openshift-ansible and image building, build/ose for OCP versions 3.6 and earlier, build/openshift-scripts for RPMs and container images for the OpenShift Online team, build/refresh-images, and build/scan-images which performs CVE scanning using openscap. Sprint-related jobs include sprint/stage-to-prod which promotes RPMs from staging to production repositories across multiple mirror locations, and sprint/control which sends communications about development and staging cuts to engineering teams. Additional operational jobs cover package-dockertested for Docker build testing, starter/operation for cluster operations, and starter/upgrade for openshift-ansible based cluster upgrades.
The jjb directory contains Jenkins Job Builder definitions that were investigated for supporting openshift-ansible CI jobs but are not currently active. The continuous-upgrade directory uses the Jenkins Job Builder framework with a generate-jobs.py script to create continuous cluster upgrade job configurations. The sjb directory implements a custom XML generator bridging monolithic Freestyle Jenkins jobs with segmented Jenkins Pipelines. This generator reads YAML configuration files from sjb/config, processes them through Python action modules in sjb/actions, and generates XML using Jinja templates. Developers modify configuration files, run sjb/generate.sh after installing Python dependencies, and use sjb/push-update-automatic.sh to deploy changes after merge approval.
The approvers directory manages pull request merge policies across sprint phases. The system supports severity levels including none, bug, blocker, and low-risk, with low-risk allowing merges during all phases except closed branches. Branch stages include Open, DevCut, StageCut, and Closed, each with different merge permissions based on severity. This ensures pull requests are only merged during appropriate sprint phases, protecting release stability while allowing critical fixes and low-risk changes throughout the development cycle.