[PATCH] CI: Add gitlab tags to builds which can use all CPUs

Simon Glass sjg at chromium.org
Thu Nov 28 17:00:10 CET 2024


Most gitlab runners are mostly idle at present and could happily run
several jobs at once.

There are a few exceptions, such as the world builds.

Add a 'single' tag for the exceptions so that they are dealt with
separately, with no concurrency. This is not quite perfect, since it
means that a 'single' job can be combined with a number of normal jobs,
but in practice this doesn't seem to matter.

To use this, for each existing machine, add a new, separate runner, with
the tag 'single'. Set 'limit = 1' in its config.toml file and set
'concurrent = 10' (for example) in the global section. The machine will
then pick up one 'single' job and up to 9 other jobs at once.

In my testing this reduces the time to complete a CI pipeline.

My choice of which jobs to mark as single is mostly down to how much CPU
they need. For the 'docs' job, it runs for a short time, so doesn't seem
worth marking it as a 'single' job.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

 .gitlab-ci.yml | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2164ad79a72..03bbf764a44 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -110,6 +110,8 @@ stages:
 
 build all 32bit ARM platforms:
   extends: .world_build
+  tags:
+    - single
   script:
     - ret=0;
       git config --global --add safe.directory "${CI_PROJECT_DIR}";
@@ -122,6 +124,8 @@ build all 32bit ARM platforms:
 
 build all 64bit ARM platforms:
   extends: .world_build
+  tags:
+    - single
   script:
     - virtualenv -p /usr/bin/python3 /tmp/venv
     - . /tmp/venv/bin/activate
@@ -136,6 +140,8 @@ build all 64bit ARM platforms:
 
 build all PowerPC platforms:
   extends: .world_build
+  tags:
+    - single
   script:
     - ret=0;
       git config --global --add safe.directory "${CI_PROJECT_DIR}";
@@ -147,6 +153,8 @@ build all PowerPC platforms:
 
 build all other platforms:
   extends: .world_build
+  tags:
+    - single
   script:
     - ret=0;
       git config --global --add safe.directory "${CI_PROJECT_DIR}";
@@ -192,6 +200,8 @@ Check for configs without MAINTAINERS entry:
 # Ensure host tools build
 Build tools-only and envtools:
   extends: .testsuites
+  tags:
+    - single
   script:
     - make tools-only_config tools-only -j$(nproc);
       make mrproper;
@@ -224,6 +234,8 @@ Run binman, buildman, dtoc, Kconfig and patman testsuites:
 # Check for any pylint regressions
 Run pylint:
   extends: .testsuites
+  tags:
+    - single
   script:
     - git config --global --add safe.directory "${CI_PROJECT_DIR}"
     - pip install -r test/py/requirements.txt
-- 
2.34.1



More information about the U-Boot mailing list