[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