Mercurial > hg
changeset 52258:b65f11f49375 stable
ci: for branches, use a single trigger
This trigger will unlock all the job necessary to build wheels and upload
nightly build. This should make the nightly build process more pratical.
In practice right now, only run pipeline for branch by creating them explicitly
on the web. So we could just run everything without trigger, but this is a
decision for later. This changeset only focus on making the nightly build
process somewhat manageable.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 15 Nov 2024 00:01:34 +0100 |
parents | 3f7c7a855af0 |
children | 074bc2b135f3 |
files | contrib/heptapod-ci.yml |
diffstat | 1 files changed, 51 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/contrib/heptapod-ci.yml Thu Nov 14 22:44:25 2024 +0100 +++ b/contrib/heptapod-ci.yml Fri Nov 15 00:01:34 2024 +0100 @@ -20,6 +20,7 @@ when: always stages: + - nightly-trigger - build - checks - tests @@ -79,6 +80,17 @@ - .dummy when: manual + +trigger-nightly-build: + extends: .trigger + stage: nightly-trigger + rules: + - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH + when: manual + allow_failure: true + - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC + when: never + .build-wheel: extends: .all image: "registry.heptapod.net/mercurial/ci-images/core-wheel-x86_64-c:v3.0" @@ -100,6 +112,7 @@ - wheels/ expire_in: 1 week + build-c-wheel: extends: .build-wheel variables: @@ -239,12 +252,18 @@ trigger-pycompat: extends: .trigger stage: py-version-compat + rules: + - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH + when: on_success + needs: + - trigger-nightly-build + - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC + when: manual + allow_failure: true .test-c-pycompat: extends: .test-c stage: py-version-compat - needs: - - trigger-pycompat variables: WHEEL_TYPE: "c" @@ -256,6 +275,7 @@ variables: PYTHON: python3.8 needs: + - job: trigger-pycompat - job: build-c-wheel parallel: matrix: @@ -266,6 +286,7 @@ variables: PYTHON: python3.12 needs: + - job: trigger-pycompat - job: build-c-wheel parallel: matrix: @@ -284,6 +305,7 @@ variables: PYTHON: python3.13 needs: + - job: trigger-pycompat - job: build-c-wheel parallel: matrix: @@ -333,6 +355,12 @@ trigger-wheel-windows: extends: .trigger stage: build + rules: + - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH + when: never + - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC + when: manual + allow_failure: true build-c-wheel-windows: extends: .windows @@ -340,7 +368,13 @@ # wait for someone to click on "trigger-wheel-windows" when: on_success needs: - - "trigger-wheel-windows" + rules: + - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH + needs: + - trigger-nightly-build + - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC + needs: + - "trigger-wheel-windows" variables: MERCURIAL_SETUP_FORCE_TRANSLATIONS: "1" script: @@ -458,7 +492,13 @@ # The weird directory structure match the one we use for Linux to deal with the # multiple jobs. (all this might be unnecessary) build-c-wheel-macos: - when: manual # avoid overloading the CI by default + rules: + - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH + needs: + - trigger-nightly-build + - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC + when: manual # avoid overloading the CI by default + allow_failure: true stage: build tags: - macos @@ -494,9 +534,6 @@ when: on_success - if: '$CI_COMMIT_BRANCH =~ $RE_TOPIC' when: never - # if you need to test this, make it - # when: manual - # allow_failure: true # a dummy job that gather greatly parallel object into one. # @@ -505,10 +542,10 @@ # .sink: extends: - - .nightly_build_sink + - .nightly_build_step - .dummy -linux-test-result: +test-result-linux: extends: .sink needs: - test-c @@ -516,12 +553,12 @@ - test-3.12-c - test-3.13-c -macos-test-result: +test-result-macos: extends: .sink needs: - macos -windows-test-result: +test-result-windows: extends: .sink needs: - windows @@ -544,9 +581,9 @@ - build-c-wheel - build-c-wheel-macos - build-c-wheel-windows - - linux-test-result - - macos-test-result - - windows-test-result + - test-result-linux + - test-result-macos + - test-result-windows # It would be nice to be able to restrict that a bit to protected branch only variables: TWINE_USERNAME: gitlab-ci-token