automation: allow selecting individual jobs via CI variables

Debugging sometimes involves running specific jobs on different
versions. It's useful to easily avoid running all of the not interesting
ones (for given case) to save both time and CI resources. Doing so used
to require changing the yaml files, usually in several places.
Ease this step by adding SELECTED_JOBS_ONLY variable that takes a regex.
Note that one needs to satisfy job dependencies on their own (for
example if a test job needs a build job, that specific build job
needs to be included too).

The variable can be specified via Gitlab web UI when scheduling a
pipeline, but it can be also set when doing git push directly:

    git push -o ci.variable=SELECTED_JOBS_ONLY="/job1|job2/"

More details at https://docs.gitlab.co.jp/ee/user/project/push_options.html

The variable needs to include regex for selecting jobs, including
enclosing slashes.
A coma/space separated list of jobs to select would be friendlier UX,
but unfortunately that is not supported:
https://gitlab.com/gitlab-org/gitlab/-/issues/209904 (note the proposed
workaround doesn't work for job-level CI_JOB_NAME).
On the other hand, the regex is more flexible (one can select for
example all arm32 jobs).

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Acked-by: Stefano Stabellini <sstabellini@kernel.org>
(cherry picked from commit 9d419afa46)
This commit is contained in:
Marek Marczykowski-Górecki authored and Andrew Cooper committed 2025-05-09 22:45:20 +01:00
1 parent eb2b48f2dc
commit b41df85556
3 files changed
+22

No files matched your search

+2
View File
@@ -1,5 +1,7 @@
variables:
XEN_REGISTRY: registry.gitlab.com/xen-project/xen
SELECTED_JOBS_ONLY:
description: "Regex to select only some jobs, must be enclosed with /. For example /job1|job2/"
workflow:
rules:
+6
View File
@@ -12,6 +12,12 @@
- '*/*.log'
when: always
needs: []
rules:
- if: $SELECTED_JOBS_ONLY && $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY
when: always
- if: $SELECTED_JOBS_ONLY
when: never
- when: on_success
.gcc-tmpl:
variables: &gcc
+14
View File
@@ -1,6 +1,11 @@
.test-jobs-common:
stage: test
image: ${XEN_REGISTRY}/${CONTAINER}
rules:
- if: $SELECTED_JOBS_ONLY && $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY
- if: $SELECTED_JOBS_ONLY
when: never
- when: on_success
.arm64-test-needs: &arm64-test-needs
- alpine-3.18-arm64-rootfs-export
@@ -99,6 +104,9 @@
- '*.dtb'
when: always
rules:
- if: $SELECTED_JOBS_ONLY && $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY
- if: $SELECTED_JOBS_ONLY
when: never
- if: $XILINX_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true"
tags:
- xilinx
@@ -117,6 +125,9 @@
- '*.log'
when: always
rules:
- if: $SELECTED_JOBS_ONLY && $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY
- if: $SELECTED_JOBS_ONLY
when: never
- if: $XILINX_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true"
tags:
- xilinx
@@ -137,6 +148,9 @@
- '*.log'
when: always
rules:
- if: $SELECTED_JOBS_ONLY && $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY
- if: $SELECTED_JOBS_ONLY
when: never
- if: $QUBES_JOBS == "true" && $CI_COMMIT_REF_PROTECTED == "true"
tags:
- qubes-hw2
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.