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