changeset 52249:16e5de783a1b stable

ci: adds a trigger for all pycompat jobs This will help triggering a job of all pycompat job. In addition this will also make the pycompat job block landing of Merge Request when triggered. A quite useful feature.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Sat, 09 Nov 2024 02:55:33 +0100
parents 084e7ae69ae4
children 05953a37c608
files contrib/heptapod-ci.yml
diffstat 1 files changed, 38 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/contrib/heptapod-ci.yml	Sun Nov 10 02:11:13 2024 +0100
+++ b/contrib/heptapod-ci.yml	Sat Nov 09 02:55:33 2024 +0100
@@ -48,6 +48,23 @@
   # starting.
   needs: []
 
+# a dummy job that only serve to trigger others
+#
+# This is useful for two reasons:
+# - the UX around parallel jobs is awful so manually starting them is unpractical
+# - manual starting job cannot make the pipeline "fails" and block a merge,
+#   while "on_success" job depending on manual trigger works fine in that regard.
+.trigger:
+  extends: .all
+  # smallest I know of
+  image: busybox
+  when: manual
+  variables:
+    GIT_STRATEGY: none
+    CI_CLEVER_CLOUD_FLAVOR: "XS"
+  script:
+    - echo 'nothing to see here'
+
 .build-wheel:
   extends: .all
   image: "registry.heptapod.net/mercurial/ci-images/core-wheel-x86_64-c:v3.0"
@@ -204,16 +221,26 @@
     variables:
         FLAVOR: "--chg"
 
+
+trigger-pycompat:
+  extends: .trigger
+  stage: py-version-compat
+
+.test-c-pycompat:
+    extends: .test-c
+    stage: py-version-compat
+    needs:
+      - trigger-pycompat
+    variables:
+        WHEEL_TYPE: "c"
+
 # note: we should probably get a full matrix for flavor × py-version, but this
 # is a simple start to be able to check if we break the lowest supported
 # version (and 3.12 have been giving us various troubles)
 test-3.8-c:
-    extends: .test-c
-    stage: py-version-compat
-    when: manual  # avoid overloading the CI by default
+    extends: .test-c-pycompat
     variables:
         PYTHON: python3.8
-        WHEEL_TYPE: "c"
     needs:
       - job: build-c-wheel
         parallel:
@@ -221,12 +248,9 @@
             - BUILD_PY_ID: "cp38-cp38"
 
 test-3.12-c:
-    extends: .test-c
-    stage: py-version-compat
-    when: manual  # avoid overloading the CI by default
+    extends: .test-c-pycompat
     variables:
         PYTHON: python3.12
-        WHEEL_TYPE: "c"
     needs:
       - job: build-c-wheel
         parallel:
@@ -236,17 +260,15 @@
 test-3.12-rust:
     extends: test-rust
     stage: py-version-compat
-    when: manual  # avoid overloading the CI by default
+    needs:
+      - trigger-pycompat
     variables:
         PYTHON: python3.12
 
 test-3.13-c:
-    extends: .test-c
-    stage: py-version-compat
-    when: manual  # avoid overloading the CI by default
+    extends: .test-c-pycompat
     variables:
         PYTHON: python3.13
-        WHEEL_TYPE: "c"
     needs:
       - job: build-c-wheel
         parallel:
@@ -256,7 +278,8 @@
 test-3.13-rust:
     extends: test-rust
     stage: py-version-compat
-    when: manual  # avoid overloading the CI by default
+    needs:
+      - trigger-pycompat
     variables:
         PYTHON: python3.13
 
@@ -292,19 +315,10 @@
     variables:
         PYTHON: C:/hgdev/venvs/python39-x64/Scripts/python.exe
 
-
 # a dummy job that only serve to trigger the wider windows build
 trigger-wheel-windows:
-  extends: .all
-  # smallest I know of
-  image: busybox
-  when: manual
+  extends: .trigger
   stage: build
-  variables:
-    GIT_STRATEGY: none
-    CI_CLEVER_CLOUD_FLAVOR: "XS"
-  script:
-    - echo 'let us build some wheels.'
 
 build-c-wheel-windows:
     extends: .windows