CI scripts for CentOS downstream testing
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


This project contains code to build, install and test systemd on test machines provisioned from a pool provided by the CentOS CI project, using their Duffy API.


The code in this repository is used from two sides; the agent control host (named slave01 in the CentOS CI environment), and on the provisioned machines themselves.

On the agent control host, the entry point for running new tests is called This script uses Duffy to provision new machines, and then uses SSH to log into them and run scripts from the agent/ subdirectory.


Quoting their Wiki,

Duffy is the middle layer running that manages the provisioning, maintenance and teardown / rebuild of the Nodes (physical hardware for now, VMs coming soon) that are used to run the tests in the CI Cluster.

This project contains code to provision a new machine from the pool, and to either release one specific one or all of them.

See below for the usage of this tool.


The only script end users should be accessing is on the slave01 host.

$ ./ --help
usage: [-h] [--ver VER] [--arch ARCH] [--host HOST] [--pr PR]
                        [--keep] [--kill-host KILL_HOST] [--kill-all-hosts]

optional arguments:
  -h, --help            show this help message and exit
  --ver VER             CentOS version
  --arch ARCH           Architecture
  --host HOST           Use an already provisioned build host
  --pr PR               Pull request ID
  --keep                Do not kill provisioned build host
  --kill-host KILL_HOST
                        Mark a provisioned host as done and bail out
  --kill-all-hosts      Mark all provisioned hosts as done and bail out
  --debug               Enable debug output

When called without parameters, it will build the current systemd master branch. The --keep option is helpful during development.

Jenkins glue

This script and the Jenkins execution environment are glued together with the following trivial shell script:



if [ "$CHANGE_ID" ]; then

cd /home/systemd/systemd-centos-ci

./ $ARGS

Manually running the tests

# bootstrap
yum install -q -y git
git clone
systemd-centos-ci/agent/ pr:pr-number # for example pr:4456
systemctl reboot

# testsuite
systemctl reboot

# system-tests
cd systemd-centos-ci/agent; ./
systemctl poweroff