]>
Commit | Line | Data |
---|---|---|
6a0e7ea7 | 1 | |
d4c7a565 | 2 | variables: |
e28112d0 DB |
3 | # On stable branches this is changed by later rules. Should also |
4 | # be overridden per pipeline if running pipelines concurrently | |
d4c7a565 DB |
5 | # for different branches in contributor forks. |
6 | QEMU_CI_CONTAINER_TAG: latest | |
7 | ||
1ddd2ff9 DB |
8 | # For purposes of CI rules, upstream is the gitlab.com/qemu-project |
9 | # namespace. When testing CI, it might be usefult to override this | |
10 | # to point to a fork repo | |
11 | QEMU_CI_UPSTREAM: qemu-project | |
12 | ||
6a0e7ea7 DB |
13 | # The order of rules defined here is critically important. |
14 | # They are evaluated in order and first match wins. | |
15 | # | |
16 | # Thus we group them into a number of stages, ordered from | |
17 | # most restrictive to least restrictive | |
18 | # | |
e28112d0 DB |
19 | # For pipelines running for stable "staging-X.Y" branches |
20 | # we must override QEMU_CI_CONTAINER_TAG | |
21 | # | |
6a0e7ea7 | 22 | .base_job_template: |
075d909d MCA |
23 | variables: |
24 | # Each script line from will be in a collapsible section in the job output | |
25 | # and show the duration of each line. | |
26 | FF_SCRIPT_SECTIONS: 1 | |
27 | ||
e97a9b8c TH |
28 | interruptible: true |
29 | ||
6a0e7ea7 DB |
30 | rules: |
31 | ############################################################# | |
32 | # Stage 1: exclude scenarios where we definitely don't | |
33 | # want jobs to run | |
34 | ############################################################# | |
35 | ||
a77ef83c DB |
36 | # Never run jobs upstream on stable branch, staging branch jobs already ran |
37 | - if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /^stable-/' | |
38 | when: never | |
39 | ||
40 | # Never run jobs upstream on tags, staging branch jobs already ran | |
41 | - if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_TAG' | |
42 | when: never | |
43 | ||
83aa1baa PB |
44 | # Scheduled runs on mainline don't get pipelines except for the special Coverity job |
45 | - if: '$CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_PIPELINE_SOURCE == "schedule"' | |
46 | when: never | |
47 | ||
00125414 | 48 | # Cirrus jobs can't run unless the creds / target repo are set |
34776d80 | 49 | - if: '$QEMU_JOB_CIRRUS && ($CIRRUS_GITHUB_REPO == null || $CIRRUS_API_TOKEN == null)' |
00125414 DB |
50 | when: never |
51 | ||
e312d1fd | 52 | # Publishing jobs should only run on the default branch in upstream |
1ddd2ff9 | 53 | - if: '$QEMU_JOB_PUBLISH == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH' |
e312d1fd DB |
54 | when: never |
55 | ||
56 | # Non-publishing jobs should only run on staging branches in upstream | |
1ddd2ff9 | 57 | - if: '$QEMU_JOB_PUBLISH != "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH !~ /staging/' |
e312d1fd DB |
58 | when: never |
59 | ||
16fee101 | 60 | # Jobs only intended for forks should always be skipped on upstream |
1ddd2ff9 | 61 | - if: '$QEMU_JOB_ONLY_FORKS == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM' |
16fee101 DB |
62 | when: never |
63 | ||
28357dc5 | 64 | # Forks don't get pipelines unless QEMU_CI=1 or QEMU_CI=2 is set |
1ddd2ff9 | 65 | - if: '$QEMU_CI != "1" && $QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM' |
28357dc5 DB |
66 | when: never |
67 | ||
e312d1fd | 68 | # Avocado jobs don't run in forks unless $QEMU_CI_AVOCADO_TESTING is set |
1ddd2ff9 | 69 | - if: '$QEMU_JOB_AVOCADO && $QEMU_CI_AVOCADO_TESTING != "1" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM' |
e312d1fd DB |
70 | when: never |
71 | ||
6a0e7ea7 DB |
72 | |
73 | ############################################################# | |
74 | # Stage 2: fine tune execution of jobs in specific scenarios | |
3aa2cfa0 | 75 | # where the catch all logic is inappropriate |
6a0e7ea7 DB |
76 | ############################################################# |
77 | ||
00125414 | 78 | # Optional jobs should not be run unless manually triggered |
e28112d0 DB |
79 | - if: '$QEMU_JOB_OPTIONAL && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/' |
80 | when: manual | |
81 | allow_failure: true | |
82 | variables: | |
83 | QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG | |
84 | ||
00125414 DB |
85 | - if: '$QEMU_JOB_OPTIONAL' |
86 | when: manual | |
87 | allow_failure: true | |
88 | ||
e312d1fd | 89 | # Skipped jobs should not be run unless manually triggered |
e28112d0 DB |
90 | - if: '$QEMU_JOB_SKIPPED && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/' |
91 | when: manual | |
92 | allow_failure: true | |
93 | variables: | |
94 | QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG | |
95 | ||
e312d1fd DB |
96 | - if: '$QEMU_JOB_SKIPPED' |
97 | when: manual | |
98 | allow_failure: true | |
99 | ||
100 | # Avocado jobs can be manually start in forks if $QEMU_CI_AVOCADO_TESTING is unset | |
1ddd2ff9 | 101 | - if: '$QEMU_JOB_AVOCADO && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM' |
e312d1fd DB |
102 | when: manual |
103 | allow_failure: true | |
104 | ||
6a0e7ea7 DB |
105 | |
106 | ############################################################# | |
107 | # Stage 3: catch all logic applying to any job not matching | |
108 | # an earlier criteria | |
109 | ############################################################# | |
110 | ||
28357dc5 DB |
111 | # Forks pipeline jobs don't start automatically unless |
112 | # QEMU_CI=2 is set | |
1ddd2ff9 | 113 | - if: '$QEMU_CI != "2" && $CI_PROJECT_NAMESPACE != $QEMU_CI_UPSTREAM' |
28357dc5 DB |
114 | when: manual |
115 | ||
49ac76c2 DB |
116 | # Upstream pipeline jobs start automatically unless told not to |
117 | # by setting QEMU_CI=1 | |
118 | - if: '$QEMU_CI == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/' | |
119 | when: manual | |
120 | variables: | |
121 | QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG | |
122 | ||
123 | - if: '$QEMU_CI == "1" && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM' | |
124 | when: manual | |
125 | ||
fc998891 | 126 | # Jobs can run if any jobs they depend on were successful |
e28112d0 DB |
127 | - if: '$QEMU_JOB_SKIPPED && $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_COMMIT_BRANCH =~ /staging-[[:digit:]]+\.[[:digit:]]/' |
128 | when: on_success | |
129 | variables: | |
130 | QEMU_CI_CONTAINER_TAG: $CI_COMMIT_REF_SLUG | |
131 | ||
6a0e7ea7 | 132 | - when: on_success |