CSI driver for Ceph
Go to file
karthik-us 674b1e811a ci: add capability to run specific e2e tests
The current e2e test runs will trigger all 3 types of
tests which takes a lot of time to complete. If the
patch impacta only a single type, then having an option
to trigger only that particular e2e test can save
considerable amount of time based on the test type.

This can also help in reducing the time in testing when
a patch failed on a particular e2e test type and triggering
only that e2e with the fix for the failure or re-trigger
only that test again to check for false positives.

Signed-off-by: karthik-us <ksubrahm@redhat.com>
2023-11-06 06:57:20 +00:00
deploy doc: Update/remove broken links 2023-07-04 14:58:17 +00:00
jobs ci: add capability to run specific e2e tests 2023-11-06 06:57:20 +00:00
mirror ci: strip quay.io from mirrored ceph/ceph:v18 image 2023-08-04 07:35:10 +00:00
scripts ci: use Helm 3.1.2 in test container 2021-04-20 07:08:16 +00:00
.commitlintrc.yml ci: error out for invalid component in commit header 2020-08-19 11:15:09 +00:00
.gitignore cleanup: add unwanted files to gitignore 2022-05-05 09:44:57 +00:00
ci-job-validation.groovy ci: migrate to new OpenShift cluster running on AWS 2023-03-20 09:21:41 +00:00
commitlint.groovy ci: use new duffy command for CentOS CI 2022-12-12 08:23:30 +00:00
containerized-tests.groovy ci: migrate to new OpenShift cluster running on AWS 2023-03-20 09:21:41 +00:00
k8s-e2e-external-storage.groovy ci: migrate to new OpenShift cluster running on AWS 2023-03-20 09:21:41 +00:00
Makefile build: only use --cpuset options when the cgroup controller is available 2021-03-03 05:48:42 +00:00
mini-e2e-helm.groovy ci: add capability to run specific e2e tests 2023-11-06 06:57:20 +00:00
mini-e2e.groovy ci: add capability to run specific e2e tests 2023-11-06 06:57:20 +00:00
podman2minikube.sh ci: copy images into minikube container when VM_DRIVER=podman 2022-10-12 10:14:49 +00:00
prepare.sh ci: install wget for downloading Helm 2022-10-13 06:26:56 +00:00
README.md doc: Update/remove broken links 2023-07-04 14:58:17 +00:00
run-k8s-external-storage-e2e.sh ci: skip Ephemeral-volume kubernetes external-storage tests 2021-06-30 13:40:08 +00:00
single-node-k8s.sh ci: use VM_DRIVER=podman for AWS virtual-machines 2022-10-10 07:18:28 +00:00
system-status.sh ci: add sudo prefix for status commands 2023-08-24 11:14:11 +00:00
upgrade-tests.groovy ci: override csi_upgrade_version from build.env 2023-07-21 10:57:40 +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 duffy (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.