CSI driver for Ceph
Go to file
Niels de Vos 7c6dbfdb8e ci: strip localhost/ prefix after importing images in minikube
Some versions of minikube/docker add a "localhost/" prefix to imported
images. In that case, the image needs to get tagged without the prefix
as well.

When running podman2minikube.sh, the docker process inside the minikube
VM sometimes responds with:

    # ./podman2minikube.sh rook/ceph:v1.3.9
    Loaded image: localhost/rook/ceph:v1.3.9

When the "localhost/" prefix is added to the image name, deploying Rook
will try to pull the rook/ceph:v1.3.9 image again. This can fail when
the Docker Hub pull rate-limit is hit.

Without the "localhost/" prefix, there should be no further attempt to
pull the image, as it should be detected that the image is available.

Signed-off-by: Niels de Vos <ndevos@redhat.com>
2020-11-25 15:13:43 +00:00
deploy ci: add configuration for the proxy/mirror registry 2020-11-24 05:09:38 +00:00
jobs ci: do not run commitlint on "/retest all" 2020-11-17 10:16:46 +00:00
scripts ci: add script to detect need of container image rebuild 2020-11-04 05:52:01 +00:00
.commitlintrc.yml ci: error out for invalid component in commit header 2020-08-19 11:15:09 +00:00
.gitignore ci: add 'make test' target to validate CI job scripts 2020-05-27 12:52:21 +02:00
ci-job-validation.groovy ci: enable USE_PULLED_IMAGE to prevent image builds 2020-11-04 05:52:01 +00:00
commitlint.groovy ci: use refs/pull/<id>/merge to prevent need for rebases 2020-10-21 13:29:06 +00:00
container-registry.conf ci: add configuration for the proxy/mirror registry 2020-11-24 05:09:38 +00:00
containerized-tests.groovy ci: add configuration for the proxy/mirror registry 2020-11-24 05:09:38 +00:00
k8s-e2e-external-storage.groovy ci: move podman2minikube() into its own script 2020-11-18 11:49:10 +00:00
Makefile ci: use cached image for ci-job-validation 2020-11-04 05:52:01 +00:00
mini-e2e-helm.groovy ci: provide qualified image tags for docker.io images 2020-11-24 05:09:38 +00:00
mini-e2e.groovy ci: provide qualified image tags for docker.io images 2020-11-24 05:09:38 +00:00
podman2minikube.sh ci: strip localhost/ prefix after importing images in minikube 2020-11-25 15:13:43 +00:00
prepare.sh ci: Fix shellcheck warnings for prepare.sh 2020-10-27 13:30:42 +00:00
README.md ci: update links to new OCP4 deployment 2020-07-24 14:11:42 +00:00
run-k8s-external-storage-e2e.sh ci: use self-contained kubeconfig for running k8s e2e job 2020-10-28 14:03:44 +00:00
single-node-k8s.sh cleanup: "podman inspect rook/ceph" does not need to show output 2020-11-24 05:09:38 +00:00
upgrade-tests.groovy ci: provide qualified image tags for docker.io images 2020-11-24 05:09:38 +00:00

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:

    1. dynamically allocate a Jenkins Slave (node('cico-workspace')) with tools and configuration to request a bare-metal machine
    2. checkout the centos/ci branch of the repository, which contains scripts for provisioning and preparing the environment for running tests
    3. reserve a bare-metal machine with cico (configured on the Jenkins Slave)
    4. provision the reserved bare-metal machine with additional tools and dependencies to run the test (see prepare.sh below)
    5. run make containerized-tests and make containerized-build in parallel
    6. 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)
  • 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.