ci: Use "!references" to manage scheduled pipeline rules.
authorEmma Anholt <emma@anholt.net>
Tue, 28 Jun 2022 17:43:34 +0000 (10:43 -0700)
committerMarge Bot <emma+marge@anholt.net>
Thu, 30 Jun 2022 18:31:21 +0000 (18:31 +0000)
Because !references merging happens after yaml parsing, this lets us
remove a duplicated definition between .test-source-dep.yml and
.gitlab-ci.yml.

Reviewed-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Acked-by: Eric Engestrom <eric@engestrom.ch>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17287>

.gitlab-ci.yml
.gitlab-ci/test-source-dep.yml

index aba7c1f..6615151 100644 (file)
@@ -89,12 +89,6 @@ stages:
   - layered-backends
   - deploy
 
-# Generic rule to not run the job during scheduled pipelines
-# ----------------------------------------------------------
-.scheduled_pipelines-rules:
-  rules: &ignore_scheduled_pipelines
-    if: &is-scheduled-pipeline '$CI_PIPELINE_SOURCE == "schedule"'
-    when: never
 
 # YAML anchors for rule conditions
 # --------------------------------
@@ -141,7 +135,7 @@ pages:
     - public
   needs: []
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - if: *is-mesa-main
       changes: &docs-or-ci
       - docs/**/*
@@ -156,7 +150,7 @@ test-docs:
   stage: deploy
   needs: []
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - if: *is-forked-branch
       changes: *docs-or-ci
       when: manual
@@ -180,7 +174,7 @@ test-docs-mr:
 # When to automatically run the CI
 .ci-run-policy:
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     # If any files affecting the pipeline are changed, build/test jobs run
     # automatically once all dependency jobs have passed
     - changes: &all_paths
@@ -224,7 +218,7 @@ test-docs-mr:
   extends:
     - .ci-run-policy
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     # Run pipeline by default in the main project if any CI pipeline
     # configuration files were changed, to ensure docker images are up to date
     - if: *is-post-merge
@@ -259,8 +253,7 @@ make git archive:
     - .fdo.ci-fairy
   stage: git-archive
   rules:
-    - if: *is-scheduled-pipeline
-      when: on_success
+    - !reference [.scheduled_pipeline-rules, rules]
   # ensure we are running on packet
   tags:
     - packet.net
@@ -299,7 +292,7 @@ sanity:
 # pipelines.
 .test-manual-mr:
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - if: *is-forked-branch-or-pre-merge-not-for-marge
       changes:
         *all_paths
index a6cb3c3..02a9fb1 100644 (file)
@@ -1,18 +1,24 @@
 # This file list source dependencies to avoid creating/running jobs
 # those outcome cannot be changed by the modifications from a branch.
 
-# Generic rule to not run the job during scheduled pipelines
-# ----------------------------------------------------------
-.scheduled_pipelines-rules:
-  rules: &ignore_scheduled_pipelines
-    if: '$CI_PIPELINE_SOURCE == "schedule"'
-    when: never
+# Rule to filter for only scheduled pipelines.
+.scheduled_pipeline-rules:
+  rules:
+    - if: &is-scheduled-pipeline '$CI_PIPELINE_SOURCE == "schedule"'
+      when: on_success
+
+# 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
 
 # Mesa core source file dependencies
 # ----------------------------------
 .mesa-rules:
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes: &mesa_core_file_list
       - .gitlab-ci.yml
       - .gitlab-ci/**/*
@@ -46,7 +52,7 @@
 
 .vulkan-rules:
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes: &vulkan_file_list
       - src/vulkan/**/*
       when: on_success
@@ -56,7 +62,7 @@
 # -------------------------------------
 .gallium-rules:
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes: &gallium_core_file_list
       - src/gallium/*
       - src/gallium/auxiliary/**/*
@@ -71,7 +77,7 @@
 .softpipe-rules:
   stage: software-renderer
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success
@@ -87,7 +93,7 @@
 .llvmpipe-rules:
   stage: software-renderer
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success
 .lavapipe-rules:
   stage: software-renderer
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success
 .llvmpipe-cl-rules:
   stage: software-renderer
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
       - .gitlab-ci.yml
       - .gitlab-ci/**/*
       when: never
     - if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
       when: never
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success
     - if: '($GITLAB_USER_LOGIN !~ "/^(robclark|anholt|flto|cwabbott0|Danil|tomeu|okias)$/") &&
            ($GITLAB_USER_LOGIN != "marge-bot" || $CI_COMMIT_BRANCH)'
       when: never
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success
       when: never
     - if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
       when: never
-    - *ignore_scheduled_pipelines
+    - !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
 .nouveau-rules:
   stage: nouveau
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success
 .panfrost-midgard-rules:
   stage: arm
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
       when: never
     - changes:
 .panfrost-bifrost-rules:
   stage: arm
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
       when: never
     - changes:
 .vc4-rules:
   stage: broadcom
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success
 .v3d-rules:
   stage: broadcom
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success
 .v3dv-rules:
   stage: broadcom
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success
 .lima-rules:
   stage: arm
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - if: '$LIMA_FARM == "offline"'
       when: never
     - changes:
 .radv-rules:
   stage: amd
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
       when: never
     - changes:
 .virgl-rules:
   stage: layered-backends
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success
 .virgl-iris-rules-performance:
   stage: layered-backends
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
       when: never
     # Run only on pre-merge pipelines from Marge
 .radeonsi-rules:
   stage: amd
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
       when: never
     - changes:
 .radeonsi-vaapi-rules:
   stage: amd
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
       when: never
     - changes:
 .i915g-rules:
   stage: intel
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success
 .crocus-rules:
   stage: intel
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success
 .iris-rules:
   stage: intel
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
       when: never
     - changes:
 .iris-rules-performance:
   stage: intel
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
       when: never
     # Run only on pre-merge pipelines from Marge
 .anv-rules:
   stage: intel
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
       when: never
     - changes:
 .intel-rules:
   stage: intel
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - if: '$COLLABORA_FARM == "offline" && $RUNNER_TAG =~ /^mesa-ci-x86-64-lava-/'
       when: never
     - changes:
 .zink-rules:
   stage: layered-backends
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success
 .zink-anv-rules:
   stage: layered-backends
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success
 .zink-turnip-rules:
   stage: layered-backends
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success
   rules:
     - if: '$MICROSOFT_FARM == "offline"'
       when: never
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success
   rules:
     - if: '$MICROSOFT_FARM == "offline"'
       when: never
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success
   rules:
     - if: '$MICROSOFT_FARM == "offline"'
       when: never
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success
   rules:
     - if: '$MICROSOFT_FARM == "offline"'
       when: never
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success
 .etnaviv-rules:
   stage: etnaviv
   rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success
 # Rules for unusual architectures that only build a subset of drivers
 .ppc64el-rules:
    rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success
 
 .s390x-rules:
    rules:
-    - *ignore_scheduled_pipelines
+    - !reference [.no_scheduled_pipelines-rules, rules]
     - changes:
         *mesa_core_file_list
       when: on_success