xref: /qemu/.gitlab-ci.d/base.yml (revision ca61e750)
1
2# The order of rules defined here is critically important.
3# They are evaluated in order and first match wins.
4#
5# Thus we group them into a number of stages, ordered from
6# most restrictive to least restrictive
7#
8.base_job_template:
9  rules:
10    #############################################################
11    # Stage 1: exclude scenarios where we definitely don't
12    # want jobs to run
13    #############################################################
14
15    # Cirrus jobs can't run unless the creds / target repo are set
16    - if: '$QEMU_JOB_CIRRUS && ($CIRRUS_GITHUB_REPO == "" || $CIRRUS_API_TOKEN == "")'
17      when: never
18
19    # Publishing jobs should only run on the default branch in upstream
20    - if: '$QEMU_JOB_PUBLISH == "1" && $CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH'
21      when: never
22
23    # Non-publishing jobs should only run on staging branches in upstream
24    - if: '$QEMU_JOB_PUBLISH != "1" && $CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH !~ /staging/'
25      when: never
26
27    # Jobs only intended for forks should always be skipped on upstream
28    - if: '$QEMU_JOB_ONLY_FORKS == "1" && $CI_PROJECT_NAMESPACE == "qemu-project"'
29      when: never
30
31    # Forks don't get pipelines unless QEMU_CI=1 or QEMU_CI=2 is set
32    - if: '$QEMU_CI != "1" && $QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != "qemu-project"'
33      when: never
34
35    # Avocado jobs don't run in forks unless $QEMU_CI_AVOCADO_TESTING is set
36    - if: '$QEMU_JOB_AVOCADO && $QEMU_CI_AVOCADO_TESTING != "1" && $CI_PROJECT_NAMESPACE != "qemu-project"'
37      when: never
38
39
40    #############################################################
41    # Stage 2: fine tune execution of jobs in specific scenarios
42    # where the catch all logic is inapprorpaite
43    #############################################################
44
45    # Optional jobs should not be run unless manually triggered
46    - if: '$QEMU_JOB_OPTIONAL'
47      when: manual
48      allow_failure: true
49
50    # Skipped jobs should not be run unless manually triggered
51    - if: '$QEMU_JOB_SKIPPED'
52      when: manual
53      allow_failure: true
54
55    # Avocado jobs can be manually start in forks if $QEMU_CI_AVOCADO_TESTING is unset
56    - if: '$QEMU_JOB_AVOCADO && $CI_PROJECT_NAMESPACE != "qemu-project"'
57      when: manual
58      allow_failure: true
59
60
61    #############################################################
62    # Stage 3: catch all logic applying to any job not matching
63    # an earlier criteria
64    #############################################################
65
66    # Forks pipeline jobs don't start automatically unless
67    # QEMU_CI=2 is set
68    - if: '$QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != "qemu-project"'
69      when: manual
70
71    # Jobs can run if any jobs they depend on were successfull
72    - when: on_success
73