ci: build (and use) wheel for all supported version stable
authorPierre-Yves David <pierre-yves.david@octobus.net>
Wed, 06 Nov 2024 16:40:58 +0100
branchstable
changeset 52201 7dd466f13f9b
parent 52200 94ded8440db6
child 52202 069735062524
ci: build (and use) wheel for all supported version We test wheel building for all supported version and use them where applicable The usage is more verbose than I wish because .gitlab-ci is not that great.
contrib/heptapod-ci.yml
--- a/contrib/heptapod-ci.yml	Wed Nov 06 16:39:45 2024 +0100
+++ b/contrib/heptapod-ci.yml	Wed Nov 06 16:40:58 2024 +0100
@@ -52,19 +52,28 @@
     - echo $WHEEL_TYPE
     - test -n "$WHEEL_TYPE"
     - echo $FLAVOR
-    - mkdir -p wheels/$WHEEL_TYPE
+    - mkdir -p wheels/$WHEEL_TYPE/$BUILD_PY_ID
   script:
-    - /opt/python/cp311-cp311/bin/python setup.py bdist_wheel --dist-dir tmp-wheelhouse
-    - auditwheel repair tmp-wheelhouse/*.whl -w wheels/$WHEEL_TYPE/
+    - /opt/python/$BUILD_PY_ID/bin/python setup.py bdist_wheel --dist-dir tmp-wheelhouse
+    - auditwheel repair tmp-wheelhouse/*.whl -w wheels/$WHEEL_TYPE/$BUILD_PY_ID
   artifacts:
     paths:
-      - wheels/$WHEEL_TYPE
+      - wheels/$WHEEL_TYPE/$BUILD_PY_ID
     expire_in: 1 week
 
 build-c-wheel:
   <<: *wheel
   variables:
     WHEEL_TYPE: "c"
+  parallel:
+    matrix:
+      - BUILD_PY_ID:
+          - cp38-cp38
+          - cp39-cp39
+          - cp310-cp310
+          - cp311-cp311
+          - cp312-cp312
+          - cp313-cp313
 
 # TODO: We should select the wheel compatible with the python (and plateform)
 # we use. This is necessary to build multiple wheel.
@@ -84,9 +93,11 @@
     script:
         - echo "$RUNTEST_ARGS"
         - echo "$WHEEL_TYPE"
+        - echo $BUILD_PY_ID
         - WHEEL=""
         - if test -n "$WHEEL_TYPE"; then
-             WHEEL="`ls -1 $CI_PROJECT_DIR/wheels/$WHEEL_TYPE/*.whl`";
+             test -n "$BUILD_PY_ID";
+             WHEEL="`ls -1 $CI_PROJECT_DIR/wheels/$WHEEL_TYPE/$BUILD_PY_ID/*.whl`";
              test -n "$WHEEL";
           fi
         - if test -n "$WHEEL"; then
@@ -122,9 +133,15 @@
 
 test-c:
     <<: *test_c
-    needs: [build-c-wheel]
+    needs:
+      - job: build-c-wheel
+        parallel:
+          matrix:
+            - BUILD_PY_ID: "cp311-cp311"
+
     variables:
         WHEEL_TYPE: "c"
+        BUILD_PY_ID: "cp311-cp311"
         RUNTEST_ARGS: "--blacklist /tmp/check-tests.txt"
         TEST_HGTESTS_ALLOW_NETIO: "1"
 
@@ -159,6 +176,15 @@
     when: manual  # avoid overloading the CI by default
     variables:
         PYTHON: python3.8
+        WHEEL_TYPE: "c"
+        BUILD_PY_ID: "cp38-cp38"
+        RUNTEST_ARGS: " --blacklist /tmp/check-tests.txt"
+        TEST_HGTESTS_ALLOW_NETIO: "1"
+    needs:
+      - job: build-c-wheel
+        parallel:
+          matrix:
+            - BUILD_PY_ID: "cp38-cp38"
 
 test-3.12-c:
     <<: *test_c
@@ -166,6 +192,15 @@
     when: manual  # avoid overloading the CI by default
     variables:
         PYTHON: python3.12
+        WHEEL_TYPE: "c"
+        BUILD_PY_ID: "cp312-cp312"
+        RUNTEST_ARGS: " --blacklist /tmp/check-tests.txt"
+        TEST_HGTESTS_ALLOW_NETIO: "1"
+    needs:
+      - job: build-c-wheel
+        parallel:
+          matrix:
+            - BUILD_PY_ID: "cp312-cp312"
 
 test-3.12-rust:
     <<: *test_rust
@@ -180,6 +215,15 @@
     when: manual  # avoid overloading the CI by default
     variables:
         PYTHON: python3.13
+        WHEEL_TYPE: "c"
+        BUILD_PY_ID: "cp313-cp313"
+        RUNTEST_ARGS: " --blacklist /tmp/check-tests.txt"
+        TEST_HGTESTS_ALLOW_NETIO: "1"
+    needs:
+      - job: build-c-wheel
+        parallel:
+          matrix:
+            - BUILD_PY_ID: "cp313-cp313"
 
 test-3.13-rust:
     <<: *test_rust