Skip to content

Commit

Permalink
gitlab: convert Cirrus jobs to .base_job_template
Browse files Browse the repository at this point in the history
This folds the Cirrus job rules into the base job
template, introducing two new variables

  - QEMU_JOB_CIRRUS - identifies the job as making
    use of Cirrus CI via cirrus-run

  - QEMU_JOB_OPTIONAL - identifies the job as one
    that is not run by default, primarily due to
    resource constraints. It can be manually invoked
    by users if they wish to validate that scenario.

Signed-off-by: Daniel P. Berrangé <[email protected]>
Message-Id: <[email protected]>
Signed-off-by: Alex Bennée <[email protected]>
Reviewed-by: Thomas Huth <[email protected]>
Message-Id: <[email protected]>
  • Loading branch information
berrange authored and stsquad committed Jun 1, 2022
1 parent 6a0e7ea commit 0012541
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 8 deletions.
9 changes: 9 additions & 0 deletions .gitlab-ci.d/base.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,21 @@
# want jobs to run
#############################################################

# Cirrus jobs can't run unless the creds / target repo are set
- if: '$QEMU_JOB_CIRRUS && ($CIRRUS_GITHUB_REPO == "" || $CIRRUS_API_TOKEN == "")'
when: never


#############################################################
# Stage 2: fine tune execution of jobs in specific scenarios
# where the catch all logic is inapprorpaite
#############################################################

# Optional jobs should not be run unless manually triggered
- if: '$QEMU_JOB_OPTIONAL'
when: manual
allow_failure: true


#############################################################
# Stage 3: catch all logic applying to any job not matching
Expand Down
16 changes: 8 additions & 8 deletions .gitlab-ci.d/cirrus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
# special care, because we can't just override it at the GitLab CI job
# definition level or we risk breaking it completely.
.cirrus_build_job:
extends: .base_job_template
stage: build
image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
needs: []
Expand Down Expand Up @@ -40,11 +41,8 @@
<.gitlab-ci.d/cirrus/build.yml >.gitlab-ci.d/cirrus/$NAME.yml
- cat .gitlab-ci.d/cirrus/$NAME.yml
- cirrus-run -v --show-build-log always .gitlab-ci.d/cirrus/$NAME.yml
rules:
# Allow on 'staging' branch and 'stable-X.Y-staging' branches only
- if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH !~ /staging/'
when: never
- if: "$CIRRUS_GITHUB_REPO && $CIRRUS_API_TOKEN"
variables:
QEMU_JOB_CIRRUS: 1

x64-freebsd-12-build:
extends: .cirrus_build_job
Expand Down Expand Up @@ -90,11 +88,11 @@ x64-macos-11-base-build:

# The following jobs run VM-based tests via KVM on a Linux-based Cirrus-CI job
.cirrus_kvm_job:
extends: .base_job_template
stage: build
image: registry.gitlab.com/libvirt/libvirt-ci/cirrus-run:master
needs: []
timeout: 80m
allow_failure: true
script:
- sed -e "s|[@]CI_REPOSITORY_URL@|$CI_REPOSITORY_URL|g"
-e "s|[@]CI_COMMIT_REF_NAME@|$CI_COMMIT_REF_NAME|g"
Expand All @@ -105,8 +103,10 @@ x64-macos-11-base-build:
<.gitlab-ci.d/cirrus/kvm-build.yml >.gitlab-ci.d/cirrus/$NAME.yml
- cat .gitlab-ci.d/cirrus/$NAME.yml
- cirrus-run -v --show-build-log always .gitlab-ci.d/cirrus/$NAME.yml
rules:
- when: manual
variables:
QEMU_JOB_CIRRUS: 1
QEMU_JOB_OPTIONAL: 1


x86-netbsd:
extends: .cirrus_kvm_job
Expand Down
14 changes: 14 additions & 0 deletions docs/devel/ci-jobs.rst.inc
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,20 @@ Maintainer controlled job variables
The following variables may be set when defining a job in the
CI configuration file.

QEMU_JOB_CIRRUS
~~~~~~~~~~~~~~~

The job makes use of Cirrus CI infrastructure, requiring the
configuration setup for cirrus-run to be present in the repository

QEMU_JOB_OPTIONAL
~~~~~~~~~~~~~~~~~

The job is expected to be successful in general, but is not run
by default due to need to conserve limited CI resources. It is
available to be started manually by the contributor in the CI
pipelines UI.

Contributor controlled runtime variables
----------------------------------------

Expand Down

0 comments on commit 0012541

Please sign in to comment.