It might be overkill (and frustrating) to rerun all the jobs when iterating over a single code unit. As some users are interested in only rerunning a specific set of jobs, allow them to use a "manual" profile, when jobs are created in the pipeline but not started. It is up to the user to manually start the jobs of interest.
To switch a repository to manual, set QEMU_DEFAULT_WORKFLOW_MANUAL in the project UI, following [1]. Once a repository is using the manual workflow, the user can still automatically start the jobs by explicitly set the QEMU_IGNORE_DEFAULT_WORKFLOW which disable the manual mode. Example while pushing a branch/tag from command line (see [2]): $ git push -o ci.variable="QEMU_IGNORE_DEFAULT_WORKFLOW=1" \ myrepo mybranch [1] https://docs.gitlab.com/ee/ci/variables/#create-a-custom-variable-in-the-ui [2] https://docs.gitlab.com/ee/user/project/push_options.html#push-options-for-gitlab-cicd Signed-off-by: Philippe Mathieu-Daudé <phi...@redhat.com> --- .gitlab-ci.d/crossbuilds.yml | 4 ++++ .gitlab-ci.yml | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/.gitlab-ci.d/crossbuilds.yml b/.gitlab-ci.d/crossbuilds.yml index 864cad7cec5..56b053cbb52 100644 --- a/.gitlab-ci.d/crossbuilds.yml +++ b/.gitlab-ci.d/crossbuilds.yml @@ -1,4 +1,5 @@ .cross_system_build_job: + extends: .allow_skipping_job stage: build image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest timeout: 80m @@ -18,6 +19,7 @@ # KVM), and set extra options (such disabling other accelerators) via the # $ACCEL_CONFIGURE_OPTS variable. .cross_accel_build_job: + extends: .allow_skipping_job stage: build image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest timeout: 30m @@ -30,6 +32,7 @@ - make -j$(expr $(nproc) + 1) all check-build .cross_user_build_job: + extends: .allow_skipping_job stage: build image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest script: @@ -40,6 +43,7 @@ - make -j$(expr $(nproc) + 1) all check-build .cross_sanity_check_job: + extends: .allow_skipping_job stage: build image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest timeout: 3m diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 98bff03b47b..26b85f08f35 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -13,7 +13,21 @@ include: - local: '/.gitlab-ci.d/containers.yml' - local: '/.gitlab-ci.d/crossbuilds.yml' +.allow_skipping_job_template: &allow_skipping_job_definition + rules: + # Skip if the user set the QEMU_DEFAULT_WORKFLOW_MANUAL variable for its + # project. Can be overridden by setting the QEMU_IGNORE_DEFAULT_WORKFLOW + # variable. + - if: $CI_PIPELINE_SOURCE == "push" && $QEMU_DEFAULT_WORKFLOW_MANUAL && $QEMU_IGNORE_DEFAULT_WORKFLOW == null + when: manual + allow_failure: true + - when: always + +.allow_skipping_job: + <<: *allow_skipping_job_definition + .native_build_job_template: &native_build_job_definition + <<: *allow_skipping_job_definition stage: build image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest before_script: @@ -35,6 +49,7 @@ include: fi .native_test_job_template: &native_test_job_definition + <<: *allow_skipping_job_definition stage: test image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest script: @@ -43,6 +58,7 @@ include: - make $MAKE_CHECK_ARGS .acceptance_template: &acceptance_definition + <<: *allow_skipping_job_definition cache: key: "${CI_JOB_NAME}-cache" paths: @@ -536,6 +552,7 @@ check-dco: GIT_DEPTH: 1000 build-libvhost-user: + <<: *allow_skipping_job_definition stage: build image: $CI_REGISTRY_IMAGE/qemu/fedora:latest before_script: @@ -547,6 +564,7 @@ build-libvhost-user: - ninja pages: + <<: *allow_skipping_job_definition image: $CI_REGISTRY_IMAGE/qemu/ubuntu2004:latest stage: test needs: -- 2.26.2