1 | # This file list source dependencies to avoid creating/running jobs
|
---|
2 | # those outcome cannot be changed by the modifications from a branch.
|
---|
3 |
|
---|
4 | # Rule to filter for only scheduled pipelines.
|
---|
5 | .scheduled_pipeline-rules:
|
---|
6 | rules:
|
---|
7 | - if: &is-scheduled-pipeline '$CI_PIPELINE_SOURCE == "schedule"'
|
---|
8 | when: on_success
|
---|
9 | retry:
|
---|
10 | max: 1
|
---|
11 | # Don't retry on script_failure, job_execution_timeout, runner_unsupported,
|
---|
12 | # stale_schedule, archived_failure, or unmet_prerequisites
|
---|
13 | when:
|
---|
14 | - api_failure
|
---|
15 | - runner_system_failure
|
---|
16 | - scheduler_failure
|
---|
17 | - data_integrity_failure
|
---|
18 | - unknown_failure
|
---|
19 |
|
---|
20 |
|
---|
21 | # Generic rule to not run the job during scheduled pipelines. Jobs that aren't
|
---|
22 | # something like a nightly run should include this rule.
|
---|
23 | .no_scheduled_pipelines-rules:
|
---|
24 | rules:
|
---|
25 | - if: *is-scheduled-pipeline
|
---|
26 | when: never
|
---|
27 |
|
---|
28 | # Rule for restricted traces jobs to only run for users with access to those
|
---|
29 | # traces (both https://gitlab.freedesktop.org/gfx-ci/tracie/traces-db-private
|
---|
30 | # for trace access, and minio bucket access for viewing result images from CI).
|
---|
31 | #
|
---|
32 | # This is a compromise, allowing some marked developers to have their MRs
|
---|
33 | # blocked on regressions to non-redistributable traces, while not blocking
|
---|
34 | # merges for other devs who would be unable to debug changes to them.
|
---|
35 | .restricted-rules:
|
---|
36 | rules:
|
---|
37 | # If the triggerer has access to the restricted traces and if it is pre-merge
|
---|
38 | - if: '($GITLAB_USER_LOGIN !~ "/^(robclark|anholt|flto|cwabbott0|Danil|tomeu|okias|gallo|kwg|majanes|llanderwelin|zmike|vigneshraman)$/") &&
|
---|
39 | ($GITLAB_USER_LOGIN != "marge-bot" || $CI_COMMIT_BRANCH)'
|
---|
40 | when: never
|
---|
41 |
|
---|
42 | # Mesa core source file dependencies that may impact any test job
|
---|
43 | # ---------------------------------------------------------------
|
---|
44 | .core-rules:
|
---|
45 | rules:
|
---|
46 | - !reference [.no_scheduled_pipelines-rules, rules]
|
---|
47 | - changes: &core_file_list
|
---|
48 | - .gitlab-ci.yml
|
---|
49 | - .gitlab-ci/**/*
|
---|
50 | - include/**/*
|
---|
51 | - meson.build
|
---|
52 | - meson_options.txt
|
---|
53 | - build-support/**/*
|
---|
54 | - subprojects/**/*
|
---|
55 | - .gitattributes
|
---|
56 | - src/*
|
---|
57 | - src/compiler/**/*
|
---|
58 | - src/drm-shim/**/*
|
---|
59 | - src/gbm/**/*
|
---|
60 | - src/gtest/**/*
|
---|
61 | # Some src/util and src/compiler files use headers from mesa/ (e.g.
|
---|
62 | # mtypes.h). We should clean that up.
|
---|
63 | - src/mesa/**/*.h
|
---|
64 | - src/tool/**/*
|
---|
65 | - src/util/**/*
|
---|
66 | when: on_success
|
---|
67 |
|
---|
68 | # Same core dependencies for doing manual runs.
|
---|
69 | .core-manual-rules:
|
---|
70 | retry: !reference [.scheduled_pipeline-rules, retry]
|
---|
71 | rules:
|
---|
72 | # We only want manual jobs to show up when it's not marge's pre-merge CI
|
---|
73 | # run, otherwise she'll wait until her timeout. The exception is
|
---|
74 | # performance jobs, see below.
|
---|
75 | - if: '($GITLAB_USER_LOGIN == "marge-bot" &&
|
---|
76 | $CI_PIPELINE_SOURCE == "merge_request_event" &&
|
---|
77 | $CI_JOB_NAME !~ "/performance$/")'
|
---|
78 | when: never
|
---|
79 | - !reference [.scheduled_pipeline-rules, rules]
|
---|
80 | - changes:
|
---|
81 | *core_file_list
|
---|
82 | when: manual
|
---|
83 |
|
---|
84 | # Rules for performance jobs tracking. We want perf jobs to run as code is
|
---|
85 | # merged to main, but we don't want them to block marge. So, they need to have
|
---|
86 | # only when: never or when: manual, and a separate script maintained by
|
---|
87 | # Collabora triggers the manual job after merge to main. These "never" filters
|
---|
88 | # need to come before any paths with "manual".
|
---|
89 | .performance-rules:
|
---|
90 | rules:
|
---|
91 | - !reference [.no_scheduled_pipelines-rules, rules]
|
---|
92 | # Run only on pre-merge pipelines from Marge
|
---|
93 | - if: $MESA_CI_PERFORMANCE_ENABLED == null
|
---|
94 | when: never
|
---|
95 | # Allow the merge to complete even before the job completes (since it won't
|
---|
96 | # even start until the separate script triggers on it).
|
---|
97 | allow_failure: true
|
---|
98 |
|
---|
99 | .piglit-performance-base:
|
---|
100 | extends:
|
---|
101 | - .performance-rules
|
---|
102 | variables:
|
---|
103 | JOB_PRIORITY: 40
|
---|
104 | PIGLIT_REPLAY_SUBCOMMAND: "profile"
|
---|
105 | PIGLIT_REPLAY_EXTRA_ARGS: "--db-path ${CI_PROJECT_DIR}/replayer-db/"
|
---|
106 | # More than this can hit OOM due to BOs leaked during the replay of the last frame
|
---|
107 | PIGLIT_REPLAY_LOOP_TIMES: 150
|
---|
108 | # We don't want for more than one workload to be submitted to the GPU at a time
|
---|
109 | FDO_CI_CONCURRENT: 1
|
---|
110 | # Piglit is very sparse in its status output and downloads of big traces can take a while
|
---|
111 | DEVICE_HANGING_TIMEOUT_SEC: 600
|
---|
112 | GIT_STRATEGY: none
|
---|
113 | HWCI_FREQ_MAX: "true"
|
---|
114 | # Always use the same device
|
---|
115 | LAVA_TAGS: "cbg-0"
|
---|
116 | # Ensure that we are using the release build artifact
|
---|
117 | S3_ARTIFACT_NAME: mesa-${ARCH}-default-release
|
---|
118 | # Reset dependencies in performance jobs to enforce the release build artifact
|
---|
119 | dependencies: null
|
---|
120 | # Don't run in parallel. It is okay to performance jobs to take a little
|
---|
121 | # longer to finish, as they don't block marge from merging an MR.
|
---|
122 | parallel: null
|
---|
123 |
|
---|
124 | .piglit-performance:arm64:
|
---|
125 | extends:
|
---|
126 | - .piglit-performance-base
|
---|
127 | needs:
|
---|
128 | - debian/arm64_test
|
---|
129 | - debian-arm64-release
|
---|
130 |
|
---|
131 | .piglit-performance:x86_64:
|
---|
132 | extends:
|
---|
133 | - .piglit-performance-base
|
---|
134 | needs:
|
---|
135 | - kernel+rootfs_x86_64
|
---|
136 | - debian-release
|
---|
137 |
|
---|
138 | # Mesa source file dependencies that may impact any GL driver test job.
|
---|
139 | .gallium-core-rules:
|
---|
140 | rules:
|
---|
141 | - !reference [.core-rules, rules]
|
---|
142 | - changes: &gallium_core_file_list
|
---|
143 | - src/gallium/*
|
---|
144 | - src/gallium/auxiliary/**/*
|
---|
145 | - src/gallium/drivers/*
|
---|
146 | - src/gallium/include/**/*
|
---|
147 | - src/gallium/frontends/dri/*
|
---|
148 | - src/gallium/frontends/glx/**/*
|
---|
149 | - src/gallium/targets/**/*
|
---|
150 | - src/gallium/tests/**/*
|
---|
151 | - src/gallium/winsys/*
|
---|
152 | when: on_success
|
---|
153 |
|
---|
154 | .gl-rules:
|
---|
155 | rules:
|
---|
156 | - !reference [.core-rules, rules]
|
---|
157 | - changes: &mesa_core_file_list
|
---|
158 | - src/egl/**/*
|
---|
159 | - src/glx/**/*
|
---|
160 | - src/loader/**/*
|
---|
161 | - src/mapi/**/*
|
---|
162 | - src/mesa/*
|
---|
163 | - src/mesa/main/**/*
|
---|
164 | - src/mesa/math/**/*
|
---|
165 | - src/mesa/program/**/*
|
---|
166 | - src/mesa/sparc/**/*
|
---|
167 | - src/mesa/state_tracker/**/*
|
---|
168 | - src/mesa/swrast/**/*
|
---|
169 | - src/mesa/swrast_setup/**/*
|
---|
170 | - src/mesa/vbo/**/*
|
---|
171 | - src/mesa/x86/**/*
|
---|
172 | - src/mesa/x86-64/**/*
|
---|
173 | when: on_success
|
---|
174 | - !reference [.gallium-core-rules, rules]
|
---|
175 |
|
---|
176 | .gl-manual-rules:
|
---|
177 | retry: !reference [.scheduled_pipeline-rules, retry]
|
---|
178 | rules:
|
---|
179 | - !reference [.core-manual-rules, rules]
|
---|
180 | - changes:
|
---|
181 | *mesa_core_file_list
|
---|
182 | when: manual
|
---|
183 | - changes:
|
---|
184 | *gallium_core_file_list
|
---|
185 | when: manual
|
---|
186 |
|
---|
187 | # Source file dependencies that may impact any Vulkan driver build or test
|
---|
188 | .vulkan-rules:
|
---|
189 | rules:
|
---|
190 | - !reference [.core-rules, rules]
|
---|
191 | - changes: &vulkan_file_list
|
---|
192 | - src/vulkan/**/*
|
---|
193 | when: on_success
|
---|
194 |
|
---|
195 | .vulkan-manual-rules:
|
---|
196 | retry: !reference [.scheduled_pipeline-rules, retry]
|
---|
197 | rules:
|
---|
198 | - !reference [.core-manual-rules, rules]
|
---|
199 | - changes:
|
---|
200 | *vulkan_file_list
|
---|
201 | when: manual
|
---|
202 |
|
---|
203 | # Rules for unusual architectures that only build a subset of drivers
|
---|
204 | .ppc64el-rules:
|
---|
205 | rules:
|
---|
206 | - !reference [.never-post-merge-rules, rules]
|
---|
207 | - !reference [.no_scheduled_pipelines-rules, rules]
|
---|
208 | - !reference [.zink-common-rules, rules]
|
---|
209 | - !reference [.softpipe-rules, rules]
|
---|
210 | - !reference [.llvmpipe-rules, rules]
|
---|
211 | - !reference [.lavapipe-rules, rules]
|
---|
212 | - !reference [.radv-rules, rules]
|
---|
213 | - !reference [.radeonsi-rules, rules]
|
---|
214 | - !reference [.virgl-rules, rules]
|
---|
215 | - !reference [.nouveau-rules, rules]
|
---|
216 |
|
---|
217 | .s390x-rules:
|
---|
218 | rules:
|
---|
219 | - !reference [.never-post-merge-rules, rules]
|
---|
220 | - !reference [.no_scheduled_pipelines-rules, rules]
|
---|
221 | - !reference [.zink-common-rules, rules]
|
---|
222 | - !reference [.softpipe-rules, rules]
|
---|
223 | - !reference [.llvmpipe-rules, rules]
|
---|
224 | - !reference [.lavapipe-rules, rules]
|
---|
225 |
|
---|
226 | # Rules for linters
|
---|
227 | .lint-rustfmt-rules:
|
---|
228 | rules:
|
---|
229 | - !reference [.never-post-merge-rules, rules]
|
---|
230 | - !reference [.core-rules, rules]
|
---|
231 | # in merge pipeline, formatting checks are not allowed to fail
|
---|
232 | - if: $GITLAB_USER_LOGIN == "marge-bot" && $CI_PIPELINE_SOURCE == "merge_request_event"
|
---|
233 | changes: &rust_file_list
|
---|
234 | - src/**/*.rs
|
---|
235 | when: on_success
|
---|
236 | allow_failure: false
|
---|
237 | # in other pipelines, formatting checks are allowed to fail
|
---|
238 | - changes: *rust_file_list
|
---|
239 | when: on_success
|
---|
240 | allow_failure: true
|
---|
241 |
|
---|
242 | .lint-clang-format-rules:
|
---|
243 | rules:
|
---|
244 | - !reference [.never-post-merge-rules, rules]
|
---|
245 | - !reference [.core-rules, rules]
|
---|
246 | # in merge pipeline, formatting checks are not allowed to fail
|
---|
247 | - if: $GITLAB_USER_LOGIN == "marge-bot" && $CI_PIPELINE_SOURCE == "merge_request_event"
|
---|
248 | changes: &clang_format_file_list
|
---|
249 | - .clang-format
|
---|
250 | - .clang-format-include
|
---|
251 | - .clang-format-ignore
|
---|
252 | - src/**/.clang-format
|
---|
253 | - src/egl/**/*
|
---|
254 | - src/amd/vulkan/**/*
|
---|
255 | - src/amd/compiler/**/*
|
---|
256 | - src/etnaviv/isa/**/*
|
---|
257 | when: on_success
|
---|
258 | allow_failure: false
|
---|
259 | # in other pipelines, formatting checks are allowed to fail
|
---|
260 | - changes: *clang_format_file_list
|
---|
261 | when: on_success
|
---|
262 | allow_failure: true
|
---|