Files
mesa/.gitlab-ci/test-source-dep.yml
Alyssa Rosenzweig 0e481bf463 ci: Opt out asahi from clang-format
I'm still 100% a believer in clang-format enforcement, but given the difficult
constraints upstream CI has, I no longer believe it is productive or fair to do
this enforcement upstream. Instead, it can be (and effectively is) enforced much
more inexpensively in the Asahi tree. It is far better for me to insert a
"reformat asahi" commit once in a while when I rebase the Asahi tree, than to
shoot down an unrelated upstream MR because someone forgot to ninja
clang-format.

I regret adding the clang-format lint to CI. To those who have lost merges over
it, I am sorry. I'm learning from my mistakes and trying to do better.

I would encourage other drivers in the clang-format include to follow suit, but
doing this effectively requires a driver/hardware tree to do the enforcement. (I
would also encourage that, as it is much friendlier to upstream CI, but that's a
different discussion.)

For now, let's opt out asahi at the least.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26030>
2023-11-04 14:13:09 +00:00

242 lines
7.7 KiB
YAML

# This file list source dependencies to avoid creating/running jobs
# those outcome cannot be changed by the modifications from a branch.
# Rule to filter for only scheduled pipelines.
.scheduled_pipeline-rules:
rules:
- if: &is-scheduled-pipeline '$CI_PIPELINE_SOURCE == "schedule"'
when: on_success
retry:
max: 1
# Don't retry on script_failure, job_execution_timeout, runner_unsupported,
# stale_schedule, archived_failure, or unmet_prerequisites
when:
- api_failure
- runner_system_failure
- scheduler_failure
- data_integrity_failure
- unknown_failure
# Generic rule to not run the job during scheduled pipelines. Jobs that aren't
# something like a nightly run should include this rule.
.no_scheduled_pipelines-rules:
rules:
- if: *is-scheduled-pipeline
when: never
# Rule for restricted traces jobs to only run for users with access to those
# traces (both https://gitlab.freedesktop.org/gfx-ci/tracie/traces-db-private
# for trace access, and minio bucket access for viewing result images from CI).
#
# This is a compromise, allowing some marked developers to have their MRs
# blocked on regressions to non-redistributable traces, while not blocking
# merges for other devs who would be unable to debug changes to them.
.restricted-rules:
rules:
# If the triggerer has access to the restricted traces and if it is pre-merge
- if: '($GITLAB_USER_LOGIN !~ "/^(robclark|anholt|flto|cwabbott0|Danil|tomeu|okias|gallo|kwg|majanes|llanderwelin|zmike|vigneshraman)$/") &&
($GITLAB_USER_LOGIN != "marge-bot" || $CI_COMMIT_BRANCH)'
when: never
# Mesa core source file dependencies that may impact any test job
# ---------------------------------------------------------------
.core-rules:
rules:
- !reference [.no_scheduled_pipelines-rules, rules]
- changes: &core_file_list
- .gitlab-ci.yml
- .gitlab-ci/**/*
- include/**/*
- meson.build
- .gitattributes
- src/*
- src/compiler/**/*
- src/drm-shim/**/*
- src/gbm/**/*
- src/gtest/**/*
# Some src/util and src/compiler files use headers from mesa/ (e.g.
# mtypes.h). We should clean that up.
- src/mesa/**/*.h
- src/tool/**/*
- src/util/**/*
when: on_success
# Same core dependencies for doing manual runs.
.core-manual-rules:
retry: !reference [.scheduled_pipeline-rules, retry]
rules:
# We only want manual jobs to show up when it's not marge's pre-merge CI
# run, otherwise she'll wait until her timeout. The exception is
# performance jobs, see below.
- if: '($GITLAB_USER_LOGIN == "marge-bot" &&
$CI_PIPELINE_SOURCE == "merge_request_event" &&
$CI_JOB_NAME !~ "/performance$/")'
when: never
- !reference [.scheduled_pipeline-rules, rules]
- changes:
*core_file_list
when: manual
# Rules for performance jobs tracking. We want perf jobs to run as code is
# merged to main, but we don't want them to block marge. So, they need to have
# only when: never or when: manual, and a separate script maintained by
# Collabora triggers the manual job after merge to main. These "never" filters
# need to come before any paths with "manual".
.performance-rules:
rules:
- !reference [.no_scheduled_pipelines-rules, rules]
# Run only on pre-merge pipelines from Marge
- if: $MESA_CI_PERFORMANCE_ENABLED == null
when: never
# Allow the merge to complete even before the job completes (since it won't
# even start until the separate script triggers on it).
allow_failure: true
.piglit-performance-base:
extends:
- .performance-rules
variables:
JOB_PRIORITY: 40
PIGLIT_REPLAY_SUBCOMMAND: "profile"
PIGLIT_REPLAY_EXTRA_ARGS: "--db-path ${CI_PROJECT_DIR}/replayer-db/"
# More than this can hit OOM due to BOs leaked during the replay of the last frame
PIGLIT_REPLAY_LOOP_TIMES: 150
# We don't want for more than one workload to be submitted to the GPU at a time
FDO_CI_CONCURRENT: 1
# Piglit is very sparse in its status output and downloads of big traces can take a while
DEVICE_HANGING_TIMEOUT_SEC: 600
GIT_STRATEGY: none
HWCI_FREQ_MAX: "true"
# Always use the same device
LAVA_TAGS: "cbg-0"
# Ensure that we are using the release build artifact
S3_ARTIFACT_NAME: mesa-${ARCH}-default-release
# Reset dependencies in performance jobs to enforce the release build artifact
dependencies: null
# Don't run in parallel. It is okay to performance jobs to take a little
# longer to finish, as they don't block marge from merging an MR.
parallel: null
.piglit-performance:arm64:
extends:
- .piglit-performance-base
needs:
- debian/arm64_test
- debian-arm64-release
.piglit-performance:x86_64:
extends:
- .piglit-performance-base
needs:
- kernel+rootfs_x86_64
- debian-release
# Mesa source file dependencies that may impact any GL driver test job.
.gallium-core-rules:
rules:
- !reference [.core-rules, rules]
- changes: &gallium_core_file_list
- src/gallium/*
- src/gallium/auxiliary/**/*
- src/gallium/drivers/*
- src/gallium/include/**/*
- src/gallium/frontends/dri/*
- src/gallium/frontends/glx/**/*
- src/gallium/targets/**/*
- src/gallium/tests/**/*
- src/gallium/winsys/*
when: on_success
.gl-rules:
rules:
- !reference [.core-rules, rules]
- changes: &mesa_core_file_list
- src/egl/**/*
- src/glx/**/*
- src/loader/**/*
- src/mapi/**/*
- src/mesa/*
- src/mesa/main/**/*
- src/mesa/math/**/*
- src/mesa/program/**/*
- src/mesa/sparc/**/*
- src/mesa/state_tracker/**/*
- src/mesa/swrast/**/*
- src/mesa/swrast_setup/**/*
- src/mesa/vbo/**/*
- src/mesa/x86/**/*
- src/mesa/x86-64/**/*
when: on_success
- !reference [.gallium-core-rules, rules]
.gl-manual-rules:
retry: !reference [.scheduled_pipeline-rules, retry]
rules:
- !reference [.core-manual-rules, rules]
- changes:
*mesa_core_file_list
when: manual
- changes:
*gallium_core_file_list
when: manual
# Source file dependencies that may impact any Vulkan driver build or test
.vulkan-rules:
rules:
- !reference [.core-rules, rules]
- changes: &vulkan_file_list
- src/vulkan/**/*
when: on_success
.vulkan-manual-rules:
retry: !reference [.scheduled_pipeline-rules, retry]
rules:
- !reference [.core-manual-rules, rules]
- changes:
*vulkan_file_list
when: manual
# Rules for unusual architectures that only build a subset of drivers
.ppc64el-rules:
rules:
- !reference [.no_scheduled_pipelines-rules, rules]
- !reference [.zink-common-rules, rules]
- !reference [.softpipe-rules, rules]
- !reference [.llvmpipe-rules, rules]
- !reference [.lavapipe-rules, rules]
- !reference [.radv-rules, rules]
- !reference [.radeonsi-rules, rules]
- !reference [.virgl-rules, rules]
- !reference [.nouveau-rules, rules]
.s390x-rules:
rules:
- !reference [.no_scheduled_pipelines-rules, rules]
- !reference [.zink-common-rules, rules]
- !reference [.softpipe-rules, rules]
- !reference [.llvmpipe-rules, rules]
- !reference [.lavapipe-rules, rules]
# Rules for linters
.lint-rustfmt-rules:
rules:
- !reference [.core-rules, rules]
- changes:
- src/**/*.rs
when: on_success
.lint-clang-format-rules:
rules:
- !reference [.core-rules, rules]
- changes:
- .clang-format
- .clang-format-include
- .clang-format-ignore
- src/**/.clang-format
- src/egl/**/*
- src/**/panfrost/**/*
- src/amd/vulkan/**/*
- src/amd/compiler/**/*
when: on_success