This repository contains all the job definitions and supporting code used in Jenkins jobs used by the Foreman project on it's own ci system ci.theforeman.org and ci.centos.org. We use Jenkins for our nightly and release package building. Those are composed in packaging release pipelines and tested by calling out to CentOS CI to provision VMs for end to end testing of installations. Then lastly there are jobs to deploy our website, our Jenkins configuration and our Puppet environment.
Jenkins Job Builder (JJB) is an OpenStack tool for generating Jenkins job definitions (an XML file) from a set of YAML job descriptions, which we store in version control.
A bootstrap job named jenkins-jobs-update
runs the JJB tool to update the jobs in the live instance whenever a change is merged to this repository.
Useful resources:
Note Because centos.org
is a shared environment all jobs are prefixed by foreman-
to denote they're ours.
Name | Convention | Example 1 | Example 2 |
---|---|---|---|
Nightly Source Builder | {git-repo}-{git-branch}-source-release | foreman-develop-source-release | hammer-cli-katello-master-source-release |
Nightly Package Builder | {git-repo}-{git-branch}-package-release | foreman-develop-package-release | hammer-cli-katello-master-package-release |
CI pipeline | {repository}-{environment}-{optional-concern}-pipeline | foreman-nightly-rpm-pipeline | foreman-nightly-deb-pipeline |
Pull Request testing | {git-repo}-{optional-concern}-pr-test | foreman-packaging-rpm-pr-test | foreman-packaging-deb-pr-test |
Branch testing | {git-repo}-{git-branch}-test | foreman-3.5-stable-test | smart-proxy-3.5-stable-test |
Jenkins is not the only place tests are defined and executed.
Repositories use GitHub Actions and preferably our reusable actions.
The definitions of these jobs are in .github/workflows/
of their respective repositories.
Failed jobs can be re-triggered from the GitHub UI which requires maintainer permissions for the repository.
Several repositories use Packit to produce RPMs based on pull requests.
The definitions of these jobs are in .packit.yaml
of their respective repositories.
Failed jobs can be re-triggered with a /packit build
comment in the PR.