a26772188a
The CI scripts pull all container images from the local CI registry. If the image name starts with "docker.io/", the images will be pushed into the test environment as "docker.io/docker.io/ceph/ceph:v15". This image will not be used by the tests, so things can still fail in case Docker Hub has reached the pull rate-limit. By dropping the additional "docker.io/" from the BASE_IMAGE name, the image gets pushed as "docker.io/ceph/ceph:v15" so the tests will use it automatically. Groovy-syntax: https://www.baeldung.com/groovy-remove-string-prefix#using-regex Signed-off-by: Niels de Vos <ndevos@redhat.com> |
||
---|---|---|
deploy | ||
jobs | ||
scripts | ||
.commitlintrc.yml | ||
.gitignore | ||
ci-job-validation.groovy | ||
commitlint.groovy | ||
containerized-tests.groovy | ||
k8s-e2e-external-storage.groovy | ||
Makefile | ||
mini-e2e-helm.groovy | ||
mini-e2e.groovy | ||
podman2minikube.sh | ||
prepare.sh | ||
README.md | ||
run-k8s-external-storage-e2e.sh | ||
single-node-k8s.sh | ||
upgrade-tests.groovy |
Continuous Integration Jobs for the CentOS CI
- dedicated Jenkins instance for Ceph-CSI
- Jenkins is hosted on OpenShift in the CentOS CI
- scripts and Jenkins jobs are hosted in the Ceph-CSI repository (ci/centos branch)
- a Jenkins Pipeline is used to reserve bare metal system(s), and run jobs on those systems
Repository/Branch Structure
This is the ci/centos
branch, where all the scripts for the Jenkins jobs are
maintained. The tests that are executed by the jobs are part of the normal
projects branches.
As an example, the containerized-tests
Jenkins job consists out of the
following files:
-
jobs/containerized-tests.yaml
is a Jenkins Job Builder configuration that describes the events when the job should get run and fetches the.groovy
file from the git repository/branch -
containerized-tests.groovy
is the Jenkins Pipeline that contains the stages for the Jenkins Job itself. In order to work with the bare-metal machines from the CentOS CI, it executes the following stages:- dynamically allocate a Jenkins Slave (
node('cico-workspace')
) with tools and configuration to request a bare-metal machine - checkout the
centos/ci
branch of the repository, which contains scripts for provisioning and preparing the environment for running tests - reserve a bare-metal machine with
cico
(configured on the Jenkins Slave) - provision the reserved bare-metal machine with additional tools and
dependencies to run the test (see
prepare.sh
below) - run
make containerized-tests
andmake containerized-build
in parallel - as final step, return the bare-metal machine to the CentOS CI for other users (it will be re-installed with a minimal CentOS environment again)
- dynamically allocate a Jenkins Slave (
-
prepare.sh
installs dependencies for the test, and checks out the git repository and branch (or Pull Request) that contains the commits to be tested (and the test itself)
Deploying the Jenkins Jobs
The Jenkins Jobs are described in Jenkins Job Builder configuration files and
Jenkins Pipelines. These need to be imported in the Jenkins instance before
they can be run. Importing is done with the jenkins-jobs
command, which runs
in a jjb
container. To build the container, and provide the configuration for
Jenkins Job Builder, see the documentation in the deploy/
directory.