gitlab-ci: rules:changes to test on tested drivers changes
authorPierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Wed, 30 Oct 2019 19:39:08 +0000 (20:39 +0100)
committerPierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Mon, 9 Mar 2020 15:31:55 +0000 (16:31 +0100)
For now tests only use these drivers:
  * llvmpipe
  * softpipe
  * freedreno
  * lima
  * etnaviv
  * panfrost

So using rules:changes gitlab feature to run the tests when the changes
made are potentially affecting these drivers.

A few notes:
  * the following code:
      .piglit-test:
        extends:
          - .test-gl
          - .llvmpipe-rules
    makes gitlab replace .test-gl "rules:changes" values by the one from
    ".llvmpipe-rules".
  * rules:changes always matches for non-MR new branches so jobs will always be
    created (and they'll be run if their dependencies are run). For pushes to
    existing branches the files changed by the push are used to match the
    rules:changes path.
  * the same gitlab feature could be used for some build jobs

Acked-by: Eric Engestrom <eric@engestrom.ch>
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2569>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2569>

.gitlab-ci.yml
.gitlab-ci/lava-gitlab-ci.yml
.gitlab-ci/test-source-dep.yml [new file with mode: 0644]

index 56b9a7606c0d5d7c0dc770661490030390d0c419..5cc46fba89d2ea695be3d90e5c43e690e8bcc29b 100644 (file)
@@ -6,6 +6,7 @@ include:
     ref: b7030c2cd0d6ccc5f6d4f8299bafa4daa9240d71
     file: '/templates/debian.yml'
   - local: '.gitlab-ci/lava-gitlab-ci.yml'
+  - local: '.gitlab-ci/test-source-dep.yml'
 
 stages:
   - container
@@ -567,8 +568,9 @@ scons-old-llvm:
     - x86_test-vk
 
 .piglit-test:
-  extends: .test-gl
-  stage: llvmpipe
+  extends:
+    - .test-gl
+    - .llvmpipe-rules
   artifacts:
     when: on_failure
     name: "mesa_${CI_JOB_NAME}"
@@ -644,12 +646,14 @@ llvmpipe-gles2:
     LP_NUM_THREADS: 0
     DEQP_EXPECTED_FAILS: deqp-llvmpipe-fails.txt
     LIBGL_ALWAYS_SOFTWARE: "true"
-  extends: .deqp-test-gl
-  stage: llvmpipe
+  extends:
+    - .deqp-test-gl
+    - .llvmpipe-rules
 
 softpipe-gles2:
-  extends: llvmpipe-gles2
-  stage: softpipe
+  extends:
+    - llvmpipe-gles2
+    - .softpipe-rules
   variables:
     DEQP_EXPECTED_FAILS: deqp-softpipe-fails.txt
     DEQP_SKIPS: deqp-softpipe-skips.txt
@@ -671,7 +675,7 @@ arm64_a630_gles2:
   extends:
     - .deqp-test-gl
     - .use-arm_test
-  stage: freedreno
+    - .freedreno-rules
   variables:
     DEQP_VER: gles2
     DEQP_EXPECTED_FAILS: deqp-freedreno-a630-fails.txt
@@ -766,7 +770,9 @@ radv-polaris10-fossils:
     - ./artifacts/tracie-runner-vk.sh
 
 llvmpipe-traces:
-  extends: .traces-test-gl
+  extends:
+    - .traces-test-gl
+    - .llvmpipe-rules
   variables:
     LIBGL_ALWAYS_SOFTWARE: "true"
     GALLIUM_DRIVER: "llvmpipe"
index 00e960f86e6d0d1e8a7ae5f4aeacc380f643a371..3df5894d7cea0a96994660549a94c846e41479e3 100644 (file)
@@ -67,8 +67,9 @@
     - meson-arm64
 
 panfrost-t720-gles2:arm64:
-  extends: .lava-test:arm64
-  stage: panfrost
+  extends:
+    - .lava-test:arm64
+    - .panfrost-rules
   variables:
     DEVICE_TYPE: sun50i-h6-pine-h64
     GPU_VERSION: panfrost-t720
@@ -77,8 +78,9 @@ panfrost-t720-gles2:arm64:
     - lava-sun50i-h6-pine-h64
 
 panfrost-t760-gles2:armhf:
-  extends: .lava-test:armhf
-  stage: panfrost
+  extends:
+    - .lava-test:armhf
+    - .panfrost-rules
   variables:
     DEVICE_TYPE: rk3288-veyron-jaq
     GPU_VERSION: panfrost-t760
@@ -89,8 +91,9 @@ panfrost-t760-gles2:armhf:
     - lava-rk3288-veyron-jaq
 
 panfrost-t860-gles2:arm64:
-  extends: .lava-test:arm64
-  stage: panfrost
+  extends:
+    - .lava-test:arm64
+    - .panfrost-rules
   variables:
     DEVICE_TYPE: rk3399-gru-kevin
     GPU_VERSION: panfrost-t860
@@ -101,8 +104,9 @@ panfrost-t860-gles2:arm64:
     - lava-rk3399-gru-kevin
 
 panfrost-t860-gles3:arm64:
-  extends: .lava-test:arm64
-  stage: panfrost
+  extends:
+    - .lava-test:arm64
+    - .panfrost-rules
   variables:
     DEVICE_TYPE: rk3399-gru-kevin
     GPU_VERSION: panfrost-t860
@@ -116,8 +120,9 @@ panfrost-t860-gles3:arm64:
     - lava-rk3399-gru-kevin
 
 .panfrost-t820-gles2:arm64:
-  extends: .lava-test:arm64
-  stage: panfrost
+  extends:
+    - .lava-test:arm64
+    - .panfrost-rules
   variables:
     DEVICE_TYPE: meson-gxm-khadas-vim2
     GPU_VERSION: panfrost-t820
@@ -128,8 +133,9 @@ panfrost-t860-gles3:arm64:
 
 .lima-mali400-test:armhf:
   parallel: 2
-  extends: .lava-test:armhf
-  stage: misc-tests
+  extends:
+    - .lava-test:armhf
+    - .lima-rules
   variables:
     DEVICE_TYPE: sun8i-h3-libretech-all-h3-cc
     GPU_VERSION: lima
@@ -138,8 +144,9 @@ panfrost-t860-gles3:arm64:
     - lava-sun8i-h3-libretech-all-h3-cc
 
 lima-mali450-test:arm64:
-  extends: .lava-test:arm64
-  stage: misc-tests
+  extends:
+    - .lava-test:arm64
+    - .lima-rules
   variables:
     DEVICE_TYPE: meson-gxl-s905x-libretech-cc
     GPU_VERSION: lima
@@ -148,8 +155,9 @@ lima-mali450-test:arm64:
     - lava-meson-gxl-s905x-libretech-cc
 
 .freedreno-a307-gles2:
-  extends: .lava-test:arm64
-  stage: freedreno
+  extends:
+    - .lava-test:arm64
+    - .freedreno-rules
   variables:
     DEVICE_TYPE: apq8016-sbc
     GPU_VERSION: freedreno-a307
diff --git a/.gitlab-ci/test-source-dep.yml b/.gitlab-ci/test-source-dep.yml
new file mode 100644 (file)
index 0000000..a243ea9
--- /dev/null
@@ -0,0 +1,118 @@
+# This file list source dependencies to avoid creating/running jobs
+# those outcome cannot be changed by the modifications from a branch.
+
+# Mesa core source file dependencies
+# ----------------------------------
+.mesa-rules:
+  rules:
+    - changes: &mesa_core_file_list
+      - .gitlab-ci.yml
+      - .gitlab-ci/**/*
+      - include/**/*
+      - meson.build
+      - SConstruct
+      - src/*
+      - src/compiler/**/*
+      - src/drm-shim/**/*
+      - src/egl/**/*
+      - src/gbm/**/*
+      - src/glx/**/*
+      - src/gtest/**/*
+      - src/hgl/**/*
+      - src/include/**/*
+      - src/loader/**/*
+      - src/mapi/**/*
+      - src/mesa/**/*
+      - src/util/**/*
+
+# Gallium core source file dependencies
+# -------------------------------------
+.gallium-rules:
+  rules:
+    - changes: &gallium_core_file_list
+      - src/gallium/*
+      - src/gallium/auxiliary/**/*
+      - src/gallium/drivers/*
+      - src/gallium/include/**/*
+      - src/gallium/state_trackers/**/*
+      - src/gallium/targets/**/*
+      - src/gallium/tests/**/*
+      - src/gallium/winsys/*
+
+.softpipe-rules:
+  stage: softpipe
+  rules:
+    - changes:
+        *mesa_core_file_list
+      when: on_success
+    - changes:
+        *gallium_core_file_list
+      when: on_success
+    - changes:
+      - src/gallium/drivers/softpipe/**/*
+      - src/gallium/winsys/sw/**/*
+      when: on_success
+    - when: never
+
+.llvmpipe-rules:
+  stage: llvmpipe
+  rules:
+    - changes:
+        *mesa_core_file_list
+      when: on_success
+    - changes:
+        *gallium_core_file_list
+      when: on_success
+    - changes:
+      - src/gallium/drivers/llvmpipe/**/*
+      - src/gallium/winsys/sw/**/*
+      when: on_success
+    - when: never
+
+.freedreno-rules:
+  stage: freedreno
+  rules:
+    - changes:
+        *mesa_core_file_list
+      when: on_success
+    - changes:
+        *gallium_core_file_list
+      when: on_success
+    - changes:
+      - src/freedreno/**/*
+      - src/gallium/drivers/freedreno/**/*
+      - src/gallium/winsys/freedreno/**/*
+      when: on_success
+    - when: never
+
+.panfrost-rules:
+  stage: panfrost
+  rules:
+    - changes:
+        *mesa_core_file_list
+      when: on_success
+    - changes:
+        *gallium_core_file_list
+      when: on_success
+    - changes:
+      - src/gallium/drivers/panfrost/**/*
+      - src/gallium/winsys/panfrost/**/*
+      - src/panfrost/**/*
+      when: on_success
+    - when: never
+
+.lima-rules:
+  stage: misc-tests
+  rules:
+    - changes:
+        *mesa_core_file_list
+      when: on_success
+    - changes:
+        *gallium_core_file_list
+      when: on_success
+    - changes:
+      - src/gallium/drivers/lima/**/*
+      - src/gallium/winsys/lima/**/*
+      - src/lima/**/*
+      when: on_success
+    - when: never