changeset 52150:c99cbb02a82e stable

ci: split the jobs on more stage We start to have a lot of job, grouping them help to clarifying the pipeline. We don't actually create dependency between each stage, so everything still run concurrently. However we are about to introduce some wheel-building job that will be reused by some tests. So some dependencies are coming.
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Sun, 27 Oct 2024 14:10:45 +0100
parents 6f641ebe759e
children 0de1895c2218
files contrib/heptapod-ci.yml
diffstat 1 files changed, 16 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/contrib/heptapod-ci.yml	Sun Oct 27 14:08:57 2024 +0100
+++ b/contrib/heptapod-ci.yml	Sun Oct 27 14:10:45 2024 +0100
@@ -20,7 +20,12 @@
       when: always
 
 stages:
+  - build
+  - checks
   - tests
+  - platform-compat
+  - py-version-compat
+
 
 image: registry.heptapod.net/mercurial/ci-images/mercurial-core:$HG_CI_IMAGE_TAG
 
@@ -32,6 +37,7 @@
 
 .all_template: &all
   when: on_success
+  needs: []
 
 .runtests_template: &runtests
     <<: *all
@@ -52,6 +58,7 @@
 
 checks:
     <<: *runtests
+    stage: checks
     variables:
         SHOW_VERSION_OF: "$PYTHON black clang-format"
         RUNTEST_ARGS: "--time --test-list /tmp/check-tests.txt"
@@ -59,7 +66,7 @@
 
 rust-cargo-test:
     <<: *all
-    stage: tests
+    stage: checks
     script:
         - make rust-tests
         - make cargo-clippy
@@ -99,36 +106,42 @@
 # version (and 3.12 have been giving us various troubles)
 test-3.8-c:
     <<: *test_c
+    stage: py-version-compat
     when: manual  # avoid overloading the CI by default
     variables:
         PYTHON: python3.8
 
 test-3.12-c:
     <<: *test_c
+    stage: py-version-compat
     when: manual  # avoid overloading the CI by default
     variables:
         PYTHON: python3.12
 
 test-3.12-rust:
     <<: *test_rust
+    stage: py-version-compat
     when: manual  # avoid overloading the CI by default
     variables:
         PYTHON: python3.12
 
 test-3.13-c:
     <<: *test_c
+    stage: py-version-compat
     when: manual  # avoid overloading the CI by default
     variables:
         PYTHON: python3.13
 
 test-3.13-rust:
     <<: *test_rust
+    stage: py-version-compat
     when: manual  # avoid overloading the CI by default
     variables:
         PYTHON: python3.13
 
 check-pytype:
     <<: *test_rust
+    stage: checks
     before_script:
       - export PATH="/home/ci-runner/vendor/pyenv/pyenv-2.4.7-adf3c2bccf09cdb81febcfd15b186711a33ac7a8/shims:/home/ci-runner/vendor/pyenv/pyenv-2.4.7-adf3c2bccf09cdb81febcfd15b186711a33ac7a8/bin:$PATH"
       - echo "PATH, $PATH"
@@ -149,7 +162,7 @@
 .window_runtests_template: &windows_runtests
     <<: *all
     when: manual  # we don't have any Windows runners anymore at the moment
-    stage: tests
+    stage: platform-compat
     before_script:
       - C:/MinGW/msys/1.0/bin/sh.exe --login -c 'cd "$OLDPWD" && ls -1 tests/test-check-*.* > C:/Temp/check-tests.txt'
       # TODO: find/install cvs, bzr, perforce, gpg, sqlite3
@@ -183,6 +196,7 @@
 
 macos:
     <<: *test_c
+    stage: platform-compat
     when: manual  # avoid overloading the CI by default
     tags:
       - macos