[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 28/33] gitlab: introduce a common base job template
From: |
Alex Bennée |
Subject: |
[PULL 28/33] gitlab: introduce a common base job template |
Date: |
Wed, 1 Jun 2022 19:05:32 +0100 |
From: Daniel P. Berrangé <berrange@redhat.com>
Currently job rules are spread across the various templates
and jobs, making it hard to understand exactly what runs in
what scenario. This leads to inconsistency in the rules and
increased maint burden.
The intent is that we introduce a common '.base_job_template'
which will have a general purpose 'rules:' block. No other
template or job should define 'rules:', but instead they must
rely on the inherited rules. To allow behaviour to be tweaked,
rules will be influenced by a number of variables with the
naming scheme 'QEMU_JOB_nnnn'.
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20220526110705.59952-2-berrange@redhat.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20220527153603.887929-29-alex.bennee@linaro.org>
diff --git a/docs/devel/ci-jobs.rst.inc b/docs/devel/ci-jobs.rst.inc
index 92e25872aa..eb6a9e6122 100644
--- a/docs/devel/ci-jobs.rst.inc
+++ b/docs/devel/ci-jobs.rst.inc
@@ -28,7 +28,35 @@ For further information about how to set these variables,
please refer to::
https://docs.gitlab.com/ee/user/project/push_options.html#push-options-for-gitlab-cicd
-Here is a list of the most used variables:
+Variable naming and grouping
+----------------------------
+
+The variables used by QEMU's CI configuration are grouped together
+in a handful of namespaces
+
+ * QEMU_JOB_nnnn - variables to be defined in individual jobs
+ or templates, to influence the shared rules defined in the
+ .base_job_template.
+
+ * QEMU_CI_nnn - variables to be set by contributors in their
+ repository CI settings, or as git push variables, to influence
+ which jobs get run in a pipeline
+
+ * nnn - other misc variables not falling into the above
+ categories, or using different names for historical reasons
+ and not yet converted.
+
+Maintainer controlled job variables
+-----------------------------------
+
+The following variables may be set when defining a job in the
+CI configuration file.
+
+Contributor controlled runtime variables
+----------------------------------------
+
+The following variables may be set by contributors to control
+job execution
QEMU_CI_AVOCADO_TESTING
~~~~~~~~~~~~~~~~~~~~~~~
@@ -38,6 +66,12 @@ these artifacts are not already cached, downloading them
make the jobs
reach the timeout limit). Set this variable to have the tests using the
Avocado framework run automatically.
+Other misc variables
+--------------------
+
+These variables are primarily to control execution of jobs on
+private runners
+
AARCH64_RUNNER_AVAILABLE
~~~~~~~~~~~~~~~~~~~~~~~~
If you've got access to an aarch64 host that can be used as a gitlab-CI
diff --git a/.gitlab-ci.d/base.yml b/.gitlab-ci.d/base.yml
new file mode 100644
index 0000000000..10eb6ab8bc
--- /dev/null
+++ b/.gitlab-ci.d/base.yml
@@ -0,0 +1,28 @@
+
+# The order of rules defined here is critically important.
+# They are evaluated in order and first match wins.
+#
+# Thus we group them into a number of stages, ordered from
+# most restrictive to least restrictive
+#
+.base_job_template:
+ rules:
+ #############################################################
+ # Stage 1: exclude scenarios where we definitely don't
+ # want jobs to run
+ #############################################################
+
+
+ #############################################################
+ # Stage 2: fine tune execution of jobs in specific scenarios
+ # where the catch all logic is inapprorpaite
+ #############################################################
+
+
+ #############################################################
+ # Stage 3: catch all logic applying to any job not matching
+ # an earlier criteria
+ #############################################################
+
+ # Jobs can run if any jobs they depend on were successfull
+ - when: on_success
diff --git a/.gitlab-ci.d/qemu-project.yml b/.gitlab-ci.d/qemu-project.yml
index 871262fe0e..691d9bf5dc 100644
--- a/.gitlab-ci.d/qemu-project.yml
+++ b/.gitlab-ci.d/qemu-project.yml
@@ -2,6 +2,7 @@
# https://gitlab.com/qemu-project/qemu/-/pipelines
include:
+ - local: '/.gitlab-ci.d/base.yml'
- local: '/.gitlab-ci.d/stages.yml'
- local: '/.gitlab-ci.d/edk2.yml'
- local: '/.gitlab-ci.d/opensbi.yml'
--
2.30.2
- [PULL 05/33] tests/lcitool: fix up indentation to correct style, (continued)
- [PULL 05/33] tests/lcitool: fix up indentation to correct style, Alex Bennée, 2022/06/01
- [PULL 09/33] tests/docker: update debian-mips64el-cross with lcitool, Alex Bennée, 2022/06/01
- [PULL 13/33] build: clean up ninja invocation, Alex Bennée, 2022/06/01
- [PULL 08/33] tests/docker: update debian-mipsel-cross with lcitool, Alex Bennée, 2022/06/01
- [PULL 12/33] configure: do not define or use the CPP variable, Alex Bennée, 2022/06/01
- [PULL 16/33] configure, meson: move symlinking of ROMs to meson, Alex Bennée, 2022/06/01
- [PULL 21/33] configure: introduce --cross-prefix-*=, Alex Bennée, 2022/06/01
- [PULL 11/33] tests/docker: update debian-amd64 with lcitool, Alex Bennée, 2022/06/01
- [PULL 25/33] configure: enable cross-compilation of optionrom, Alex Bennée, 2022/06/01
- [PULL 14/33] build: add a more generic way to specify make->ninja dependencies, Alex Bennée, 2022/06/01
- [PULL 28/33] gitlab: introduce a common base job template,
Alex Bennée <=
- [PULL 24/33] configure: enable cross-compilation of s390-ccw, Alex Bennée, 2022/06/01
- [PULL 18/33] tests/tcg: merge configure.sh back into main configure script, Alex Bennée, 2022/06/01
- [PULL 32/33] gitlab: don't run CI jobs in forks by default, Alex Bennée, 2022/06/01
- [PULL 31/33] gitlab: convert build/container jobs to .base_job_template, Alex Bennée, 2022/06/01
- [PULL 17/33] tests/tcg: correct target CPU for sparc32, Alex Bennée, 2022/06/01
- [PULL 33/33] docs/devel: clean-up the CI links in the docs, Alex Bennée, 2022/06/01
- [PULL 29/33] gitlab: convert Cirrus jobs to .base_job_template, Alex Bennée, 2022/06/01
- [PULL 22/33] configure: include more binutils in tests/tcg makefile, Alex Bennée, 2022/06/01