[PATCH v2 3/6] ci: introduce BUILD_FOR_TESTS_ONLY

Marek Marczykowski-Górecki posted 6 patches 1 day ago
[PATCH v2 3/6] ci: introduce BUILD_FOR_TESTS_ONLY
Posted by Marek Marczykowski-Górecki 1 day ago
When the variable is set, only build jobs that are used in tests are
scheduled. This saves a lot of time, for example when scheduling a test
pipeline with alternative linux branch.

Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
 .gitlab-ci.yml                  |  2 ++
 automation/gitlab-ci/build.yaml | 25 +++++++++++++++++++++++++
 2 files changed, 27 insertions(+)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2124e3a79eef..f42a9abeaaaf 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -3,6 +3,8 @@ variables:
   SELECTED_JOBS_ONLY:
     description: "Regex to select only some jobs, must be enclosed with /. For example /job1|job2/"
     value: "/.*/"
+  BUILD_FOR_TESTS_ONLY:
+    description: "Include only build jobs necessary for running tests"
   ARTIFACTS_REPO:
     description: "Path to the test-artifacts repo"
     value: xen-project/hardware/test-artifacts
diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
index b69bad9202c2..f4e277780311 100644
--- a/automation/gitlab-ci/build.yaml
+++ b/automation/gitlab-ci/build.yaml
@@ -13,6 +13,14 @@
     when: always
   needs: []
   rules:
+    - if: $BUILD_FOR_TESTS_ONLY
+      when: never
+    - if: $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY
+      when: on_success
+
+# override BUILD_FOR_TESTS_ONLY exclusion
+.build-test-tpl: &build-test
+  rules:
     - if: $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY
       when: on_success
 
@@ -296,11 +304,13 @@ qemu-system-aarch64-6.0.0-arm32-export:
 
 alpine-3.18-gcc:
   extends: .gcc-x86-64-build
+  <<: *build-test
   variables:
     CONTAINER: alpine:3.18
 
 alpine-3.18-gcc-debug:
   extends: .gcc-x86-64-build-debug
+  <<: *build-test
   variables:
     CONTAINER: alpine:3.18
     BUILD_QEMU_XEN: y
@@ -315,16 +325,19 @@ alpine-3.18-gcc-debug:
 
 debian-13-x86_64-gcc-debug:
   extends: .gcc-x86-64-build-debug
+  <<: *build-test
   variables:
     CONTAINER: debian:13-x86_64
 
 debian-13-x86_64-clang-debug:
   extends: .clang-x86-64-build-debug
+  <<: *build-test
   variables:
     CONTAINER: debian:13-x86_64
 
 debian-13-ppc64le-gcc-debug:
   extends: .gcc-ppc64le-cross-build-debug
+  <<: *build-test
   variables:
     CONTAINER: debian:13-ppc64le
     KBUILD_DEFCONFIG: ppc64_defconfig
@@ -335,6 +348,7 @@ debian-13-ppc64le-gcc-debug:
 
 debian-13-riscv64-gcc-debug:
   extends: .gcc-riscv64-cross-build-debug
+  <<: *build-test
   variables:
     CONTAINER: debian:13-riscv64
     KBUILD_DEFCONFIG: tiny64_defconfig
@@ -347,12 +361,14 @@ debian-13-riscv64-gcc-debug:
 
 debian-bookworm-gcc-arm32:
   extends: .gcc-arm32-cross-build
+  <<: *build-test
   variables:
     CONTAINER: debian:bookworm-arm64v8-arm32-gcc
     HYPERVISOR_ONLY: y
 
 debian-bookworm-gcc-arm32-debug:
   extends: .gcc-arm32-cross-build-debug
+  <<: *build-test
   variables:
     CONTAINER: debian:bookworm-arm64v8-arm32-gcc
     HYPERVISOR_ONLY: y
@@ -366,6 +382,7 @@ debian-bookworm-gcc-arm32-randconfig:
 
 debian-bookworm-gcc-arm32-debug-staticmem:
   extends: .gcc-arm32-cross-build-debug
+  <<: *build-test
   variables:
     CONTAINER: debian:bookworm-arm64v8-arm32-gcc
     HYPERVISOR_ONLY: y
@@ -376,6 +393,7 @@ debian-bookworm-gcc-arm32-debug-staticmem:
 
 debian-bookworm-gcc-arm32-debug-earlyprintk:
   extends: .gcc-arm32-cross-build-debug
+  <<: *build-test
   variables:
     CONTAINER: debian:bookworm-arm64v8-arm32-gcc
     HYPERVISOR_ONLY: y
@@ -407,11 +425,13 @@ debian-bookworm-gcc-debug-arm64:
 
 alpine-3.18-gcc-arm64:
   extends: .gcc-arm64-build
+  <<: *build-test
   variables:
     CONTAINER: alpine:3.18-arm64v8
 
 alpine-3.18-gcc-debug-arm64:
   extends: .gcc-arm64-build-debug
+  <<: *build-test
   variables:
     CONTAINER: alpine:3.18-arm64v8
     EXTRA_XEN_CONFIG: |
@@ -426,6 +446,7 @@ alpine-3.18-gcc-arm64-randconfig:
 
 alpine-3.18-gcc-debug-arm64-staticmem:
   extends: .gcc-arm64-build-debug
+  <<: *build-test
   variables:
     CONTAINER: alpine:3.18-arm64v8
     EXTRA_XEN_CONFIG: |
@@ -435,6 +456,7 @@ alpine-3.18-gcc-debug-arm64-staticmem:
 
 alpine-3.18-gcc-debug-arm64-static-shared-mem:
   extends: .gcc-arm64-build-debug
+  <<: *build-test
   variables:
     CONTAINER: alpine:3.18-arm64v8
     EXTRA_XEN_CONFIG: |
@@ -444,6 +466,7 @@ alpine-3.18-gcc-debug-arm64-static-shared-mem:
 
 alpine-3.18-gcc-debug-arm64-boot-cpupools:
   extends: .gcc-arm64-build-debug
+  <<: *build-test
   variables:
     CONTAINER: alpine:3.18-arm64v8
     EXTRA_XEN_CONFIG: |
@@ -451,6 +474,7 @@ alpine-3.18-gcc-debug-arm64-boot-cpupools:
 
 alpine-3.18-gcc-debug-arm64-earlyprintk:
   extends: .gcc-arm64-build-debug
+  <<: *build-test
   variables:
     CONTAINER: alpine:3.18-arm64v8
     EXTRA_XEN_CONFIG: |
@@ -496,6 +520,7 @@ debian-bookworm-gcc-cppcheck:
 
 debian-bookworm-gcc-arm32-cppcheck:
   extends: .gcc-arm32-cross-build
+  <<: *build-test
   variables:
     CONTAINER: debian:bookworm-cppcheck
     CROSS_COMPILE: /usr/bin/arm-linux-gnueabihf-
-- 
git-series 0.9.1