[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 32/33] gitlab: don't run CI jobs in forks by default
From: |
Alex Bennée |
Subject: |
[PULL 32/33] gitlab: don't run CI jobs in forks by default |
Date: |
Wed, 1 Jun 2022 19:05:36 +0100 |
From: Daniel P. Berrangé <berrange@redhat.com>
To preserve CI shared runner credits we don't want to run
pipelines on every push.
This sets up the config so that pipelines are never created
for contributors by default. To override this the QEMU_CI
variable can be set to a non-zero value. If set to 1, the
pipeline will be created but all jobs will remain manually
started. The contributor can selectively run jobs that they
care about. If set to 2, the pipeline will be created and
all jobs will immediately start.
This behavior can be controlled using push variables
git push -o ci.variable=QEMU_CI=1
To make this more convenient define an alias
git config --local alias.push-ci "push -o ci.variable=QEMU_CI=1"
git config --local alias.push-ci-now "push -o ci.variable=QEMU_CI=2"
Which lets you run
git push-ci
to create the pipeline, or
git push-ci-now
to create and run the pipeline
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
Message-Id: <20220526110705.59952-6-berrange@redhat.com>
[AJB: fix typo, replicate alias tips in ci.rst]
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20220527153603.887929-33-alex.bennee@linaro.org>
diff --git a/docs/devel/ci-jobs.rst.inc b/docs/devel/ci-jobs.rst.inc
index 0b4926e537..9118a61a17 100644
--- a/docs/devel/ci-jobs.rst.inc
+++ b/docs/devel/ci-jobs.rst.inc
@@ -28,6 +28,32 @@ For further information about how to set these variables,
please refer to::
https://docs.gitlab.com/ee/user/project/push_options.html#push-options-for-gitlab-cicd
+Setting aliases in your git config
+----------------------------------
+
+You can use aliases to make it easier to push branches with different
+CI configurations. For example define an alias for triggering CI:
+
+.. code::
+
+ git config --local alias.push-ci "push -o ci.variable=QEMU_CI=1"
+ git config --local alias.push-ci-now "push -o ci.variable=QEMU_CI=2"
+
+Which lets you run:
+
+.. code::
+
+ git push-ci
+
+to create the pipeline, or:
+
+.. code::
+
+ git push-ci-now
+
+to create and run the pipeline
+
+
Variable naming and grouping
----------------------------
@@ -98,6 +124,18 @@ Contributor controlled runtime variables
The following variables may be set by contributors to control
job execution
+QEMU_CI
+~~~~~~~
+
+By default, no pipelines will be created on contributor forks
+in order to preserve CI credits
+
+Set this variable to 1 to create the pipelines, but leave all
+the jobs to be manually started from the UI
+
+Set this variable to 2 to create the pipelines and run all
+the jobs immediately, as was historicaly behaviour
+
QEMU_CI_AVOCADO_TESTING
~~~~~~~~~~~~~~~~~~~~~~~
By default, tests using the Avocado framework are not run automatically in
diff --git a/.gitlab-ci.d/base.yml b/.gitlab-ci.d/base.yml
index 4f091d5aad..f334f3ded7 100644
--- a/.gitlab-ci.d/base.yml
+++ b/.gitlab-ci.d/base.yml
@@ -28,6 +28,10 @@
- if: '$QEMU_JOB_ONLY_FORKS == "1" && $CI_PROJECT_NAMESPACE ==
"qemu-project"'
when: never
+ # Forks don't get pipelines unless QEMU_CI=1 or QEMU_CI=2 is set
+ - if: '$QEMU_CI != "1" && $QEMU_CI != "2" && $CI_PROJECT_NAMESPACE !=
"qemu-project"'
+ when: never
+
# Avocado jobs don't run in forks unless $QEMU_CI_AVOCADO_TESTING is set
- if: '$QEMU_JOB_AVOCADO && $QEMU_CI_AVOCADO_TESTING != "1" &&
$CI_PROJECT_NAMESPACE != "qemu-project"'
when: never
@@ -59,5 +63,10 @@
# an earlier criteria
#############################################################
+ # Forks pipeline jobs don't start automatically unless
+ # QEMU_CI=2 is set
+ - if: '$QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != "qemu-project"'
+ when: manual
+
# Jobs can run if any jobs they depend on were successfull
- when: on_success
--
2.30.2
- [PULL 08/33] tests/docker: update debian-mipsel-cross with lcitool, (continued)
- [PULL 08/33] tests/docker: update debian-mipsel-cross with lcitool, Alex Bennée, 2022/06/01
- [PULL 12/33] configure: do not define or use the CPP variable, Alex Bennée, 2022/06/01
- [PULL 16/33] configure, meson: move symlinking of ROMs to meson, Alex Bennée, 2022/06/01
- [PULL 21/33] configure: introduce --cross-prefix-*=, Alex Bennée, 2022/06/01
- [PULL 11/33] tests/docker: update debian-amd64 with lcitool, Alex Bennée, 2022/06/01
- [PULL 25/33] configure: enable cross-compilation of optionrom, Alex Bennée, 2022/06/01
- [PULL 14/33] build: add a more generic way to specify make->ninja dependencies, Alex Bennée, 2022/06/01
- [PULL 28/33] gitlab: introduce a common base job template, Alex Bennée, 2022/06/01
- [PULL 24/33] configure: enable cross-compilation of s390-ccw, Alex Bennée, 2022/06/01
- [PULL 18/33] tests/tcg: merge configure.sh back into main configure script, Alex Bennée, 2022/06/01
- [PULL 32/33] gitlab: don't run CI jobs in forks by default,
Alex Bennée <=
- [PULL 31/33] gitlab: convert build/container jobs to .base_job_template, Alex Bennée, 2022/06/01
- [PULL 17/33] tests/tcg: correct target CPU for sparc32, Alex Bennée, 2022/06/01
- [PULL 33/33] docs/devel: clean-up the CI links in the docs, Alex Bennée, 2022/06/01
- [PULL 29/33] gitlab: convert Cirrus jobs to .base_job_template, Alex Bennée, 2022/06/01
- [PULL 22/33] configure: include more binutils in tests/tcg makefile, Alex Bennée, 2022/06/01
- [PULL 27/33] configure: remove unused variables from config-host.mak, Alex Bennée, 2022/06/01
- [PULL 30/33] gitlab: convert static checks to .base_job_template, Alex Bennée, 2022/06/01
- [PULL 26/33] configure: enable cross compilation of vof, Alex Bennée, 2022/06/01