diff mbox series

[1/2] CI: support extra kas files from environment

Message ID 20240126164341.2846181-1-ross.burton@arm.com
State New
Headers show
Series [1/2] CI: support extra kas files from environment | expand

Commit Message

Ross Burton Jan. 26, 2024, 4:43 p.m. UTC
From: Ross Burton <ross.burton@arm.com>

Extend jobs-to-kas so the first argument is still the GitLab job name,
but allow further arguments to specify extra Kas files to use in
addition.

Then add a variable EXTRA_KAS_FILES to the CI configuration that
defaults to the empty string and pass this to jobs-to-kas.

This lets specific pipeline runs add extra Kas files, for example to use
experimental branches or enable extra features without touching the CI
directly.

Signed-off-by: Ross Burton <ross.burton@arm.com>
---
 .gitlab-ci.yml |  3 ++-
 ci/jobs-to-kas | 26 +++++++++++++++++++++-----
 2 files changed, 23 insertions(+), 6 deletions(-)

Comments

Jon Mason Jan. 27, 2024, 3:04 a.m. UTC | #1
On Fri, 26 Jan 2024 16:43:40 +0000, ross.burton@arm.com wrote:
> Extend jobs-to-kas so the first argument is still the GitLab job name,
> but allow further arguments to specify extra Kas files to use in
> addition.
> 
> Then add a variable EXTRA_KAS_FILES to the CI configuration that
> defaults to the empty string and pass this to jobs-to-kas.
> 
> [...]

Applied, thanks!

[1/2] CI: support extra kas files from environment
      commit: 827129b05b22ba4dc305cd23ec71cb2387dfdc22
[2/2] CI/cve.yml: add a CVE-checking Kas fragment
      commit: a91ddf4869806cbe92758f528afe4e51329e9ae0

Best regards,
diff mbox series

Patch

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 22ecfd71..4c6ce14a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -11,6 +11,7 @@  variables:
   FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY: 0
   ACS_TEST: 0
   ACS_TAG: ""
+  EXTRA_KAS_FILES: ""
 
 stages:
   - prep
@@ -61,7 +62,7 @@  stages:
     # Catch all for everything else
     - if: '$KERNEL != "linux-yocto-dev"'
   script:
-    - KASFILES=$(./ci/jobs-to-kas "$CI_JOB_NAME"):lockfile.yml
+    - KASFILES=$(./ci/jobs-to-kas "$CI_JOB_NAME" $EXTRA_KAS_FILES):lockfile.yml
     - kas dump --update --force-checkout --resolve-refs --resolve-env $KASFILES
     - kas build $KASFILES
     - ./ci/check-warnings $KAS_WORK_DIR/build/warnings.log
diff --git a/ci/jobs-to-kas b/ci/jobs-to-kas
index eea6e463..df81c2e3 100755
--- a/ci/jobs-to-kas
+++ b/ci/jobs-to-kas
@@ -3,17 +3,28 @@ 
 # This script is expecting an input of machine name, optionally followed by a
 # colon and a list of one or more parameters separated by commas between
 # brackets.  For example, the following are acceptable:
-# corstone1000-mps3
-# fvp-base: [testimage]
-# qemuarm64-secureboot: [clang, glibc, testimage]
+#   corstone1000-mps3
+#   fvp-base: [testimage]
+#   qemuarm64-secureboot: [clang, glibc, testimage]
+# This argument should be quoted to avoid expansion and to be handled
+# as a single value.
+#
+# Any further arguments will be handled as further yml file basenames.
 #
 # Turn this list into a series of yml files separated by colons to pass to kas
 
 set -e -u
 
-FILES="ci/$(echo $1 | cut -d ':' -f 1).yml"
+# First, parse the GitLab CI job name (CI_JOB_NAME via $1) and accumulate a list
+# of Kas files.
+JOBNAME="$1"
+shift
+
+# The base name of the job
+FILES="ci/$(echo $JOBNAME | cut -d ':' -f 1).yml"
 
-for i in $(echo $1 | cut -s -d ':' -f 2 | sed 's/[][,]//g'); do
+# The list of matrix variations
+for i in $(echo $JOBNAME | cut -s -d ':' -f 2 | sed 's/[][,]//g'); do
 	# Given that there are no yml files for gcc or glibc, as those are the
 	# defaults, we can simply ignore those parameters.  They are necessary
 	# to pass in so that matrix can correctly setup all of the permutations
@@ -24,4 +35,9 @@  for i in $(echo $1 | cut -s -d ':' -f 2 | sed 's/[][,]//g'); do
 	FILES+=":ci/$i.yml"
 done
 
+# Now pick up any further names
+for i in $*; do
+	FILES+=":ci/$i.yml"
+done
+
 echo $FILES