ci: build a wheel and use it to run c tests
First step into building and testing wheel automatically.
--- a/contrib/heptapod-ci.yml Sun Oct 27 14:10:45 2024 +0100
+++ b/contrib/heptapod-ci.yml Sun Oct 27 23:34:50 2024 +0100
@@ -39,6 +39,35 @@
when: on_success
needs: []
+# TODO: we should use an image based on manylinux instead "all-in-one" image
+# used for all test so far.
+.build-wheel: &wheel
+ <<: *all
+ stage: build
+ variables:
+ WHEEL_TYPE: ""
+ FLAVOR: ""
+ before_script:
+ - echo "python used, $PYTHON"
+ - $PYTHON --version
+ - echo $WHEEL_TYPE
+ - test -n "$WHEEL_TYPE"
+ - echo $FLAVOR
+ - mkdir -p wheels/$WHEEL_TYPE
+ script:
+ - $PYTHON setup.py bdist_wheel $FLAVOR --dist-dir wheels/$WHEEL_TYPE
+ artifacts:
+ paths:
+ - wheels/$WHEEL_TYPE
+ expire_in: 1 week
+
+build-c-wheel:
+ <<: *wheel
+ variables:
+ WHEEL_TYPE: "c"
+
+# TODO: We should select the wheel compatible with the python (and plateform)
+# we use. This is necessary to build multiple wheel.
.runtests_template: &runtests
<<: *all
stage: tests
@@ -54,7 +83,19 @@
- ls -1 tests/test-check-*.* > /tmp/check-tests.txt
script:
- echo "$RUNTEST_ARGS"
- - HGTESTS_ALLOW_NETIO="$TEST_HGTESTS_ALLOW_NETIO" "$PYTHON" tests/run-tests.py --color=always $RUNTEST_ARGS
+ - echo "$WHEEL_TYPE"
+ - WHEEL=""
+ - if test -n "$WHEEL_TYPE"; then
+ WHEEL="`ls -1 $CI_PROJECT_DIR/wheels/$WHEEL_TYPE/*.whl`";
+ test -n "$WHEEL";
+ fi
+ - if test -n "$WHEEL"; then
+ echo installing from $WHEEL;
+ HGTESTS_ALLOW_NETIO="$TEST_HGTESTS_ALLOW_NETIO" "$PYTHON" tests/run-tests.py --hg-wheel $WHEEL --color=always $RUNTEST_ARGS;
+ else
+ echo installing from source;
+ HGTESTS_ALLOW_NETIO="$TEST_HGTESTS_ALLOW_NETIO" "$PYTHON" tests/run-tests.py --color=always $RUNTEST_ARGS;
+ fi
checks:
<<: *runtests
@@ -73,12 +114,20 @@
variables:
CI_CLEVER_CLOUD_FLAVOR: S
-test-c: &test_c
+.test-c: &test_c
<<: *runtests
variables:
RUNTEST_ARGS: " --no-rust --blacklist /tmp/check-tests.txt"
TEST_HGTESTS_ALLOW_NETIO: "1"
+test-c:
+ <<: *test_c
+ needs: [build-c-wheel]
+ variables:
+ WHEEL_TYPE: "c"
+ RUNTEST_ARGS: "--blacklist /tmp/check-tests.txt"
+ TEST_HGTESTS_ALLOW_NETIO: "1"
+
test-pure:
<<: *runtests
variables: