ci: Add manual rules variations to disable irrelevant driver jobs.

If you're only affecting one or a couple of drivers, it would be nice if
your pipeline buttons on the web UI weren't full of manual run buttons for
all the other drivers.

This is a bunch of duplicated lines, but less than it could have been now
that we have !references.

In some of these cases (i915g, nouveau, etnaviv), we have no non-manual
jobs for those drivers, so I could have just rewritten the original
"driver-rules" to "driver-manual-rules".  I decided to keep things
consistent between drivers, though, because this is all esoteric enough to
readers already without making different drivers' rules look different.

Fixes: #4891
Acked-by: David Heidelberg <david.heidelberg@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17445>
This commit is contained in:
Emma Anholt 2022-07-09 20:22:35 -07:00 committed by Marge Bot
parent 67547a04b6
commit f6c06ef2f6
13 changed files with 234 additions and 87 deletions

View file

@ -300,10 +300,14 @@ sanity:
reports:
junit: check-*.xml
# Rules for tests that should not block merging, but should be available to
# optionally run with the "play" button in the UI in pre-merge non-marge
# pipelines. This should appear in "extends:" after any includes of
# Temporary rules for tests that should not block merging, but should be
# available to optionally run with the "play" button in the UI in pre-merge
# non-marge pipelines. This should appear in "extends:" after any includes of
# test-source-dep.yml rules, so that these rules replace those.
#
# If a job is going to be manual for a long period of time, then please use a
# driver-specific manual rules set from test-source-dep (see
# freedreno-manual-rules, for example)
.test-manual-mr:
rules:
- !reference [.no_scheduled_pipelines-rules, rules]

View file

@ -53,6 +53,36 @@
- src/util/**/*
when: on_success
# Same core dependencies for doing manual runs.
.core-manual-rules:
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"' &&
$GITLAB_USER_LOGIN !~ "/performance$/")
when: never
- !reference [.no_scheduled_pipelines-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: '$GITLAB_USER_LOGIN != "marge-bot" || $CI_COMMIT_BRANCH'
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
# Mesa source file dependencies that may impact any GL driver test job.
.gl-rules:
rules:
@ -86,6 +116,16 @@
- src/gallium/winsys/*
when: on_success
.gl-manual-rules:
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:
@ -94,6 +134,13 @@
- src/vulkan/**/*
when: on_success
.vulkan-manual-rules:
rules:
- !reference [.core-manual-rules, rules]
- changes:
*vulkan_file_list
when: manual
.softpipe-rules:
stage: software-renderer
rules:
@ -124,6 +171,14 @@
- src/gallium/winsys/sw/**/*
when: on_success
.lavapipe-manual-rules:
stage: software-renderer
rules:
- !reference [.vulkan-manual-rules, rules]
- !reference [.gl-manual-rules, rules]
- changes: *lavapipe_file_list
when: manual
.llvmpipe-cl-rules:
stage: software-renderer
rules:
@ -211,6 +266,14 @@
- src/freedreno/registers/**/*
when: on_success
.freedreno-common-manual-rules:
rules:
- !reference [.freedreno-farm-rules, rules]
- !reference [.core-manual-rules, rules]
- changes:
*freedreno_core_file_list
when: manual
.freedreno-rules:
stage: freedreno
rules:
@ -222,15 +285,33 @@
- src/gallium/winsys/freedreno/**/*
when: on_success
.freedreno-manual-rules:
stage: freedreno
rules:
- !reference [.freedreno-common-manual-rules, rules]
- !reference [.gl-manual-rules, rules]
- changes:
*freedreno_gl_file_list
when: manual
.turnip-rules:
stage: freedreno
rules:
- !reference [.freedreno-common-rules, rules]
- !reference [.vulkan-rules, rules]
- changes:
- changes: &freedreno_vulkan_file_list
- src/freedreno/vulkan/**/*
when: on_success
.turnip-manual-rules:
stage: freedreno
rules:
- !reference [.freedreno-common-manual-rules, rules]
- !reference [.vulkan-manual-rules, rules]
- changes:
*freedreno_vulkan_file_list
when: manual
# For piglit and skqp test jobs that run both GL and VK tests.
.freedreno-turnip-rules:
rules:
@ -243,52 +324,33 @@
- !reference [.restricted-rules, rules]
- !reference [.freedreno-rules, rules]
# Rules for GL driver performance tracking. We want them 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.
.gl-rules-performance:
rules:
- !reference [.no_scheduled_pipelines-rules, rules]
# Run only on pre-merge pipelines from Marge
- if: '$GITLAB_USER_LOGIN != "marge-bot" || $CI_COMMIT_BRANCH'
when: never
- changes:
*mesa_core_file_list
when: manual
- changes:
*gallium_core_file_list
when: manual
# 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
# Unfortunately YAML doesn't let us concatenate arrays, so we have to do the
# rules duplication manually
.freedreno-rules-performance:
stage: freedreno
rules:
- !reference [.freedreno-farm-rules, rules]
- !reference [.gl-rules-performance, rules]
- changes:
*freedreno_core_file_list
when: manual
- changes:
*freedreno_gl_file_list
when: manual
- !reference [.performance-rules, rules]
- !reference [.freedreno-manual-rules, rules]
.nouveau-rules:
stage: nouveau
rules:
- !reference [.anholt-farm-rules, rules]
- !reference [.gl-rules, rules]
- changes:
- changes: &nouveau_file_list
- src/nouveau/**/*
- src/gallium/drivers/nouveau/**/*
- src/gallium/winsys/kmsro/**/*
- src/gallium/winsys/nouveau/**/*
when: on_success
.nouveau-manual-rules:
stage: nouveau
rules:
- !reference [.anholt-farm-rules, rules]
- !reference [.gl-manual-rules, rules]
- changes:
*nouveau_file_list
when: manual
.panfrost-midgard-rules:
stage: arm
rules:
@ -309,6 +371,19 @@
- src/panfrost/midgard/**/*
when: on_success
.panfrost-midgard-manual-rules:
stage: arm
rules:
- !reference [.collabora-farm-rules, rules]
- !reference [.gl-manual-rules, rules]
- changes: *panfrost_gallium_file_list
when: manual
- changes: *panfrost_common_file_list
when: manual
- changes:
- src/panfrost/midgard/**/*
when: manual
.panfrost-bifrost-rules:
stage: arm
rules:
@ -324,13 +399,32 @@
- changes: &panfrost_vulkan_file_list
- src/panfrost/vulkan/*
when: on_success
- changes:
- changes: &panfrost_bifrost_file_list
- src/panfrost/compiler/**/*
when: on_success
.panfrost-bifrost-manual-rules:
stage: arm
rules:
- !reference [.collabora-farm-rules, rules]
- !reference [.vulkan-manual-rules, rules]
- !reference [.gl-manual-rules, rules]
- changes:
*panfrost_common_file_list
when: manual
- changes:
*panfrost_gallium_file_list
when: manual
- changes:
*panfrost_vulkan_file_list
when: manual
- changes:
*panfrost_bifrost_file_list
when: manual
.broadcom-common-rules:
rules:
- changes:
- changes: &broadcom_file_list
- src/broadcom/meson.build
- src/broadcom/ci/**/*
- src/broadcom/cle/**/*
@ -360,12 +454,24 @@
- !reference [.igalia-farm-rules, rules]
- !reference [.gl-rules, rules]
- !reference [.broadcom-common-rules, rules]
- changes:
- changes: &v3d_file_list
- src/gallium/drivers/v3d/**/*
- src/gallium/winsys/kmsro/**/*
- src/gallium/winsys/v3d/**/*
when: on_success
.v3d-manual-rules:
stage: broadcom
rules:
- !reference [.igalia-farm-rules, rules]
- !reference [.gl-manual-rules, rules]
- changes:
*broadcom_file_list
when: manual
- changes:
*v3d_file_list
when: manual
.v3dv-rules:
stage: broadcom
rules:
@ -408,6 +514,15 @@
- !reference [.valve-farm-rules, rules]
- !reference [.radv-rules, rules]
.radv-valve-manual-rules:
stage: amd
rules:
- !reference [.valve-farm-rules, rules]
- !reference [.vulkan-manual-rules, rules]
- changes:
*radv_file_list
when: manual
.virgl-rules:
stage: layered-backends
rules:
@ -420,14 +535,12 @@
- src/gallium/winsys/virgl/**/*
when: on_success
# Unfortunately we can't sed the on_success from another rules set, so we have
# to do duplicate the files lists to set the job to manual (see
# .gl-rules-performance)
.virgl-iris-rules-performance:
stage: layered-backends
rules:
- !reference [.collabora-farm-rules, rules]
- !reference [.gl-rules-performance, rules]
- !reference [.performance-rules, rules]
- !reference [.gl-manual-rules, rules]
- changes:
*llvmpipe_file_list
when: manual
@ -489,22 +602,38 @@
stage: intel
rules:
- !reference [.gl-rules, rules]
- changes:
- changes: &i915g_file_list
- src/gallium/drivers/i915/**/*
- src/gallium/winsys/i915/**/*
- src/intel/**/*
when: on_success
.i915g-manual-rules:
stage: intel
rules:
- !reference [.gl-manual-rules, rules]
- changes:
*i915g_file_list
when: manual
.crocus-rules:
stage: intel
rules:
- !reference [.gl-rules, rules]
- changes:
- changes: &crocus_file_list
- src/gallium/drivers/crocus/**/*
- src/gallium/winsys/crocus/**/*
- src/intel/**/*
when: on_success
.crocus-manual-rules:
stage: intel
rules:
- !reference [.gl-manual-rules, rules]
- changes:
*crocus_file_list
when: manual
.iris-rules:
stage: intel
rules:
@ -517,14 +646,25 @@
- src/intel/**/*
when: on_success
.iris-manual-rules:
stage: intel
rules:
- !reference [.no_scheduled_pipelines-rules, rules]
- !reference [.collabora-farm-rules, rules]
- !reference [.gl-manual-rules, rules]
- changes:
*iris_file_list
when: manual
# Unfortunately we can't sed the on_success from another rules set, so we have
# to do duplicate the files lists to set the job to manual (see
# .gl-rules-performance)
# .performance-rules)
.iris-rules-performance:
stage: intel
rules:
- !reference [.collabora-farm-rules, rules]
- !reference [.gl-rules-performance, rules]
- !reference [.performance-rules, rules]
- !reference [.gl-manual-rules, rules]
- changes:
*iris_file_list
when: manual
@ -660,7 +800,7 @@
rules:
- !reference [.austriancoder-farm-rules, rules]
- !reference [.gl-rules, rules]
- changes:
- changes: &etnaviv_file_list
- src/etnaviv/**/*
- src/gallium/drivers/etnaviv/**/*
- src/gallium/winsys/etnaviv/**/*
@ -669,6 +809,14 @@
- src/gallium/winsys/etnaviv/**/*
when: on_success
.etnaviv-manual-rules:
stage: intel
rules:
- !reference [.gl-manual-rules, rules]
- changes:
*etnaviv_file_list
when: manual
# Rules for unusual architectures that only build a subset of drivers
.ppc64el-rules:
rules:

View file

@ -265,7 +265,7 @@ vkcts-kabini-valve:
extends:
- .vkcts-test-valve
- .kabini-test-valve
- .test-manual-mr # Make sure this job is *always* run manually
- .radv-valve-manual-rules # Make sure this job is *always* run manually
timeout: 12h
variables:
GPU_VERSION: radv-kabini-aco
@ -277,7 +277,7 @@ vkcts-kabini-valve:
.vkcts-stoney-valve:
extends:
- .vkcts-test-valve
- .test-manual-mr
- .radv-valve-manual-rules
parallel: 2
# The thin clients can't manage a full run in less than an hour
# currently. Interpolation suggests four more thin clients (6
@ -297,7 +297,7 @@ vkcts-kabini-valve:
extends:
- .vkcts-test-valve
- .polaris10-test-valve
- .test-manual-mr
- .radv-valve-manual-rules
variables:
GPU_VERSION: radv-polaris10-aco
@ -305,7 +305,7 @@ vkcts-vega10-valve:
extends:
- .vkcts-test-valve
- .vega10-test-valve
- .test-manual-mr
- .radv-valve-manual-rules
variables:
GPU_VERSION: radv-vega10-aco
@ -313,7 +313,7 @@ vkcts-renoir-valve:
extends:
- .vkcts-test-valve
- .renoir-test-valve
- .test-manual-mr
- .radv-valve-manual-rules
timeout: 2h 10m
variables:
GPU_VERSION: radv-renoir-aco
@ -322,7 +322,7 @@ vkcts-navi10-valve:
extends:
- .vkcts-test-valve
- .navi10-test-valve
- .test-manual-mr
- .radv-valve-manual-rules
variables:
GPU_VERSION: radv-navi10-aco
# Use Linux 5.17 to work around hitting __vm_enough_memory then hanging on Linux 6.1
@ -341,7 +341,7 @@ vkcts-navi21-llvm-valve:
extends:
- .vkcts-test-valve
- .navi21-test-valve
- .test-manual-mr
- .radv-valve-manual-rules
variables:
GPU_VERSION: radv-navi21-llvm
RADV_DEBUG: llvm,checkir
@ -351,7 +351,7 @@ vkcts-vangogh-valve:
extends:
- .vkcts-test-valve
- .vangogh-test-valve
- .test-manual-mr
- .radv-valve-manual-rules
timeout: 2h 10m
variables:
GPU_VERSION: radv-vangogh-aco
@ -398,7 +398,7 @@ radv-fossils:
extends:
- .vkd3d-test-valve
- .kabini-test-valve
- .test-manual-mr
- .radv-valve-manual-rules
variables:
VKD3D_PROTON_RESULTS: radv-kabini-vkd3d
@ -406,7 +406,7 @@ radv-fossils:
extends:
- .vkd3d-test-valve
- .polaris10-test-valve
- .test-manual-mr
- .radv-valve-manual-rules
variables:
VKD3D_PROTON_RESULTS: radv-polaris10-vkd3d
@ -414,7 +414,7 @@ vkd3d-vega10-valve:
extends:
- .vkd3d-test-valve
- .vega10-test-valve
- .test-manual-mr
- .radv-valve-manual-rules
variables:
VKD3D_PROTON_RESULTS: radv-vega10-vkd3d
@ -422,7 +422,7 @@ vkd3d-renoir-valve:
extends:
- .vkd3d-test-valve
- .renoir-test-valve
- .test-manual-mr
- .radv-valve-manual-rules
variables:
VKD3D_PROTON_RESULTS: radv-renoir-vkd3d
@ -430,7 +430,7 @@ vkd3d-navi10-valve:
extends:
- .vkd3d-test-valve
- .navi10-test-valve
- .test-manual-mr
- .radv-valve-manual-rules
variables:
VKD3D_PROTON_RESULTS: radv-navi10-vkd3d
@ -438,7 +438,7 @@ vkd3d-navi21-valve:
extends:
- .vkd3d-test-valve
- .navi21-test-valve
- .test-manual-mr
- .radv-valve-manual-rules
variables:
VKD3D_PROTON_RESULTS: radv-navi21-vkd3d
@ -446,6 +446,6 @@ vkd3d-vangogh-valve:
extends:
- .vkd3d-test-valve
- .vangogh-test-valve
- .test-manual-mr
- .radv-valve-manual-rules
variables:
VKD3D_PROTON_RESULTS: radv-vangogh-vkd3d

View file

@ -91,8 +91,7 @@ v3d-rpi4-traces:arm64:
extends:
- .piglit-traces-test
- .baremetal-test-arm64
- .v3d-rules
- .test-manual-mr
- .v3d-manual-rules
variables:
BM_BOOTFS: /boot/raspberrypi_arm64
GPU_VERSION: broadcom-rpi4

View file

@ -43,7 +43,7 @@
gc2000_gles2:
extends:
- .etnaviv-armhf-gc2000
- .test-manual-mr
- .etnaviv-manual-rules
variables:
HWCI_TEST_SCRIPT: "/install/deqp-runner.sh"
DEQP_VER: gles2
@ -52,7 +52,7 @@ gc2000_piglit:
extends:
- .piglit-test
- .etnaviv-armhf-gc2000
- .test-manual-mr
- .etnaviv-manual-rules
variables:
PIGLIT_PLATFORM: gbm
PIGLIT_PROFILES: gpu
@ -60,7 +60,7 @@ gc2000_piglit:
gc7000_gles2:
extends:
- .etnaviv-arm64-gc7000
- .test-manual-mr
- .etnaviv-manual-rules
variables:
HWCI_TEST_SCRIPT: "/install/deqp-runner.sh"
DEQP_VER: gles2

View file

@ -54,7 +54,7 @@ a306_gl:
extends:
- .piglit-test
- .a306-test
- .test-manual-mr
- .freedreno-manual-rules
variables:
HWCI_START_XORG: 1
@ -96,7 +96,7 @@ a530_gl:
extends:
- .baremetal-deqp-test
- .a530-test
- .test-manual-mr # Unstable as of kernel 5.19
- .freedreno-manual-rules # Unstable as of kernel 5.19
variables:
DEQP_SUITE: freedreno-a530
PIGLIT_PLATFORM: gbm
@ -114,7 +114,7 @@ a530_gl:
a530_piglit_gl:
extends:
- .a530_piglit
- .test-manual-mr
- .freedreno-manual-rules
variables:
PIGLIT_PROFILES: quick_gl
@ -166,7 +166,7 @@ a618_vk:
a618_vk_full:
extends:
- a618_vk
- .test-manual-mr
- .turnip-manual-rules
# We use a longer timeout to keep the parallel down so that we don't lock up
# too many runners for a long time when a dev is trying out at full VK status.
timeout: 2h
@ -288,7 +288,7 @@ a630_vk_full:
timeout: 2h
extends:
- a630_vk
- .test-manual-mr
- .turnip-manual-rules
parallel: 2
variables:
DEQP_SUITE: freedreno-a630-vk-full

View file

@ -1,9 +1,8 @@
# Manual test rules for using anholt's shared g41.
.anholt-g41-test:
extends:
- .crocus-rules
- .crocus-manual-rules
- .test-gl
- .test-manual-mr
tags:
- anholt-g41
variables:
@ -13,9 +12,8 @@
# Manual test rules for using anholt's shared hsw.
.anholt-hsw-test:
extends:
- .crocus-rules
- .crocus-manual-rules
- .test-gl
- .test-manual-mr
tags:
- anholt-hsw
variables:

View file

@ -1,9 +1,8 @@
# Manual test rules for using anholt's shared g33.
.anholt-g33-test:
extends:
- .i915g-rules
- .i915g-manual-rules
- .test-gl
- .test-manual-mr
tags:
- anholt-g33
variables:

View file

@ -53,7 +53,7 @@ gk20a-gles:
gm20b-gles-full:
extends:
- .gm20b-test
- .test-manual-mr
- .nouveau-manual-rules
timeout: 2h
variables:
HWCI_TEST_SCRIPT: "/install/deqp-runner.sh"

View file

@ -144,7 +144,7 @@ zink-radv-navi10-valve:
extends:
- .radv-zink-test-valve
- .navi10-test-valve
- .test-manual-mr
- .radv-valve-manual-rules
variables:
GPU_VERSION: zink-radv-navi10
@ -153,6 +153,6 @@ zink-radv-vangogh-valve:
extends:
- .radv-zink-test-valve
- .vangogh-test-valve
- .test-manual-mr
- .radv-valve-manual-rules
variables:
GPU_VERSION: zink-radv-vangogh

View file

@ -44,4 +44,4 @@ lavapipe-traces:
extends:
- .piglit-traces-test
- .lavapipe-test
- .test-manual-mr
- .lavapipe-manual-rules

View file

@ -72,7 +72,7 @@ anv-tgl-vk:
.iris-amly-test:
extends:
- .iris-test
- .test-manual-mr
- .iris-manual-rules
variables:
DEVICE_TYPE: asus-C433TA-AJ0005-rammus
GPU_VERSION: iris-amly
@ -103,7 +103,7 @@ anv-tgl-vk:
.iris-cml-test:
extends:
- .iris-test
- .test-manual-mr # Devices have too often network problems and fail to boot.
- .iris-manual-rules # Devices have too often network problems and fail to boot.
variables:
DEVICE_TYPE: asus-C436FA-Flip-hatch
GPU_VERSION: iris-cml
@ -123,7 +123,7 @@ anv-tgl-vk:
iris-apl-deqp:
extends:
- .iris-apl-test
- .test-manual-mr
- .iris-manual-rules
variables:
DEQP_SUITE: iris-apl
parallel: 3

View file

@ -45,10 +45,9 @@ panfrost-t720-gles2:arm64:
panfrost-t760-gles2:armhf:
extends:
- .lava-test:armhf
- .panfrost-midgard-rules
- .panfrost-midgard-manual-rules
- .panfrost-test
- .lava-rk3288-veyron-jaq
- .test-manual-mr
.panfrost-t760-traces:armhf:
extends: