• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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