Mercurial > hg
view contrib/heptapod-ci.yml @ 52168:6b7ffa3f9199
rust-changelog: switch away from deprecated APIs for datetime use
This was caught by clippy, nothing was changed aside from some light API
changes.
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Wed, 19 Jun 2024 18:20:22 +0200 |
parents | 0de1895c2218 |
children | 8766d47edfd1 |
line wrap: on
line source
# Don't run pipelines on branch "merge", since we're fast-forward only. # Gitlab sees a new branch (since e.g. `topic/stable/my-topic` becomes # `branch/stable`), but the hash hasn't changed. There is no reason to # re-run the CI in our case, since we haven't built up any specific automation. # Right now it's just wasted CI and developer time. # One can still run the pipeline manually via the web interface, # like in the case of releases, to make *extra* sure that the actual branch # has succeeded. workflow: rules: - if: $CI_COMMIT_BRANCH =~ /^branch\/.*/ && $CI_PIPELINE_SOURCE != "web" when: never - if: $CI_PIPELINE_SOURCE == "merge_request_event" when: never - if: $CI_PIPELINE_SOURCE == "push" when: always - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS when: never - if: $CI_COMMIT_BRANCH when: always stages: - build - checks - tests - platform-compat - py-version-compat image: registry.heptapod.net/mercurial/ci-images/mercurial-core:$HG_CI_IMAGE_TAG variables: PYTHON: python HG_CI_IMAGE_TAG: "v2.1" TEST_HGTESTS_ALLOW_NETIO: "0" SHOW_VERSION_OF: "$PYTHON" .all_template: &all 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 # The runner made a clone as root. # We make a new clone owned by user used to run the step. before_script: - echo "python used, $PYTHON" - for tool in $SHOW_VERSION_OF ; do echo '#' version of $tool; $tool --version; done - rm -rf /tmp/mercurial-ci/ # Clean slate if not using containers - hg clone . /tmp/mercurial-ci/ --noupdate --config phases.publish=no - hg -R /tmp/mercurial-ci/ update `hg log --rev '.' --template '{node}'` - cd /tmp/mercurial-ci/ - ls -1 tests/test-check-*.* > /tmp/check-tests.txt script: - echo "$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 stage: checks variables: SHOW_VERSION_OF: "$PYTHON black clang-format" RUNTEST_ARGS: "--time --test-list /tmp/check-tests.txt" CI_CLEVER_CLOUD_FLAVOR: S rust-cargo-test: <<: *all stage: checks script: - make rust-tests - make cargo-clippy variables: CI_CLEVER_CLOUD_FLAVOR: S .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: RUNTEST_ARGS: "--pure --blacklist /tmp/check-tests.txt" test-rust: &test_rust <<: *runtests variables: HGWITHRUSTEXT: cpython RUNTEST_ARGS: "--rust --blacklist /tmp/check-tests.txt" test-rhg: <<: *runtests variables: HGWITHRUSTEXT: cpython RUNTEST_ARGS: "--rust --rhg --blacklist /tmp/check-tests.txt" test-chg: <<: *runtests variables: RUNTEST_ARGS: "--blacklist /tmp/check-tests.txt --chg" # 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: <<: *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" - hg clone . /tmp/mercurial-ci/ --noupdate --config phases.publish=no - hg -R /tmp/mercurial-ci/ update `hg log --rev '.' --template '{node}'` - cd /tmp/mercurial-ci/ - make local PYTHON=$PYTHON - ./contrib/setup-pytype.sh script: - echo "Entering script section" - sh contrib/check-pytype.sh # `sh.exe --login` sets a couple of extra environment variables that are defined # in the MinGW shell, but switches CWD to /home/$username. The previous value # is stored in OLDPWD. Of the added variables, MSYSTEM is crucial to running # run-tests.py- it is needed to make run-tests.py generate a `python3` script # that satisfies the various shebang lines and delegates to `py -3`. .window_runtests_template: &windows_runtests <<: *all when: manual # we don't have any Windows runners anymore at the moment 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 script: - echo "Entering script section" - echo "python used, $Env:PYTHON" - Invoke-Expression "$Env:PYTHON -V" - Invoke-Expression "$Env:PYTHON -m black --version" - echo "$Env:RUNTEST_ARGS" - echo "$Env:TMP" - echo "$Env:TEMP" - C:/MinGW/msys/1.0/bin/sh.exe --login -c 'cd "$OLDPWD" && HGTESTS_ALLOW_NETIO="$TEST_HGTESTS_ALLOW_NETIO" $PYTHON tests/run-tests.py --color=always $RUNTEST_ARGS' windows: <<: *windows_runtests tags: - windows variables: RUNTEST_ARGS: "--blacklist C:/Temp/check-tests.txt" PYTHON: py -3 windows-pyox: <<: *windows_runtests tags: - windows variables: RUNTEST_ARGS: "--blacklist C:/Temp/check-tests.txt --pyoxidized" PYTHON: py -3 macos: <<: *test_c stage: platform-compat when: manual # avoid overloading the CI by default tags: - macos