contrib/heptapod-ci.yml
author Raphaël Gomès <rgomes@octobus.net>
Mon, 04 Nov 2024 10:37:42 +0100
changeset 52300 e2319309bed4
parent 52276 13be751218e0
permissions -rw-r--r--
rust-revlog: rename `start` to `data_start` This is more explicit.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
50737
429880fd984c heptapod-ci: don't run pipelines for topic-less branches
Raphaël Gomès <rgomes@octobus.net>
parents: 50450
diff changeset
     1
# Don't run pipelines on branch "merge", since we're fast-forward only.
429880fd984c heptapod-ci: don't run pipelines for topic-less branches
Raphaël Gomès <rgomes@octobus.net>
parents: 50450
diff changeset
     2
# Gitlab sees a new branch (since e.g. `topic/stable/my-topic` becomes
429880fd984c heptapod-ci: don't run pipelines for topic-less branches
Raphaël Gomès <rgomes@octobus.net>
parents: 50450
diff changeset
     3
# `branch/stable`), but the hash hasn't changed. There is no reason to
429880fd984c heptapod-ci: don't run pipelines for topic-less branches
Raphaël Gomès <rgomes@octobus.net>
parents: 50450
diff changeset
     4
# re-run the CI in our case, since we haven't built up any specific automation.
429880fd984c heptapod-ci: don't run pipelines for topic-less branches
Raphaël Gomès <rgomes@octobus.net>
parents: 50450
diff changeset
     5
# Right now it's just wasted CI and developer time.
50739
f5b02cce82ff heptapod-ci: remove push exception for named branches
Raphaël Gomès <rgomes@octobus.net>
parents: 50738
diff changeset
     6
# One can still run the pipeline manually via the web interface,
50737
429880fd984c heptapod-ci: don't run pipelines for topic-less branches
Raphaël Gomès <rgomes@octobus.net>
parents: 50450
diff changeset
     7
# like in the case of releases, to make *extra* sure that the actual branch
429880fd984c heptapod-ci: don't run pipelines for topic-less branches
Raphaël Gomès <rgomes@octobus.net>
parents: 50450
diff changeset
     8
# has succeeded.
429880fd984c heptapod-ci: don't run pipelines for topic-less branches
Raphaël Gomès <rgomes@octobus.net>
parents: 50450
diff changeset
     9
workflow:
429880fd984c heptapod-ci: don't run pipelines for topic-less branches
Raphaël Gomès <rgomes@octobus.net>
parents: 50450
diff changeset
    10
  rules:
50739
f5b02cce82ff heptapod-ci: remove push exception for named branches
Raphaël Gomès <rgomes@octobus.net>
parents: 50738
diff changeset
    11
    - if: $CI_COMMIT_BRANCH =~ /^branch\/.*/ && $CI_PIPELINE_SOURCE != "web"
50737
429880fd984c heptapod-ci: don't run pipelines for topic-less branches
Raphaël Gomès <rgomes@octobus.net>
parents: 50450
diff changeset
    12
      when: never
429880fd984c heptapod-ci: don't run pipelines for topic-less branches
Raphaël Gomès <rgomes@octobus.net>
parents: 50450
diff changeset
    13
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
50741
929655c0e613 heptapod-ci: turn off pipelines for merge request events
Raphaël Gomès <rgomes@octobus.net>
parents: 50740
diff changeset
    14
      when: never
929655c0e613 heptapod-ci: turn off pipelines for merge request events
Raphaël Gomès <rgomes@octobus.net>
parents: 50740
diff changeset
    15
    - if: $CI_PIPELINE_SOURCE == "push"
50740
1aba446bf8e6 heptapod-ci: always make the default run condition explicit
Raphaël Gomès <rgomes@octobus.net>
parents: 50739
diff changeset
    16
      when: always
50737
429880fd984c heptapod-ci: don't run pipelines for topic-less branches
Raphaël Gomès <rgomes@octobus.net>
parents: 50450
diff changeset
    17
    - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
429880fd984c heptapod-ci: don't run pipelines for topic-less branches
Raphaël Gomès <rgomes@octobus.net>
parents: 50450
diff changeset
    18
      when: never
429880fd984c heptapod-ci: don't run pipelines for topic-less branches
Raphaël Gomès <rgomes@octobus.net>
parents: 50450
diff changeset
    19
    - if: $CI_COMMIT_BRANCH
50740
1aba446bf8e6 heptapod-ci: always make the default run condition explicit
Raphaël Gomès <rgomes@octobus.net>
parents: 50739
diff changeset
    20
      when: always
50737
429880fd984c heptapod-ci: don't run pipelines for topic-less branches
Raphaël Gomès <rgomes@octobus.net>
parents: 50450
diff changeset
    21
45959
3a3a510617e5 heptapod-ci: add a explicite "test" phases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45897
diff changeset
    22
stages:
52258
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
    23
  - nightly-trigger
52150
c99cbb02a82e ci: split the jobs on more stage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52149
diff changeset
    24
  - build
c99cbb02a82e ci: split the jobs on more stage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52149
diff changeset
    25
  - checks
45959
3a3a510617e5 heptapod-ci: add a explicite "test" phases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45897
diff changeset
    26
  - tests
52150
c99cbb02a82e ci: split the jobs on more stage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52149
diff changeset
    27
  - platform-compat
c99cbb02a82e ci: split the jobs on more stage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52149
diff changeset
    28
  - py-version-compat
52242
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
    29
  - upload
52150
c99cbb02a82e ci: split the jobs on more stage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52149
diff changeset
    30
45959
3a3a510617e5 heptapod-ci: add a explicite "test" phases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45897
diff changeset
    31
46323
723d241543b0 heptapod-ci: allow testing with docker image other than :latest
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 46256
diff changeset
    32
image: registry.heptapod.net/mercurial/ci-images/mercurial-core:$HG_CI_IMAGE_TAG
44249
8b1dd3f42396 heptapod-ci: add a basic file to be able to run tests with heptapod
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
    33
44251
2aa2408e7515 heptapod-ci: run test with python3 too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44250
diff changeset
    34
variables:
52256
ff1d4b2df8bd ci: abstract the branch matching regexp
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52250
diff changeset
    35
    # to debug use:
ff1d4b2df8bd ci: abstract the branch matching regexp
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52250
diff changeset
    36
    #
ff1d4b2df8bd ci: abstract the branch matching regexp
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52250
diff changeset
    37
    #   RE_BRANCH: '/^topic/.+/.+$/'
ff1d4b2df8bd ci: abstract the branch matching regexp
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52250
diff changeset
    38
    #   RE_TOPIC: '/^xxx/'
ff1d4b2df8bd ci: abstract the branch matching regexp
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52250
diff changeset
    39
    #
ff1d4b2df8bd ci: abstract the branch matching regexp
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52250
diff changeset
    40
    # Instead of the two following lines:
ff1d4b2df8bd ci: abstract the branch matching regexp
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52250
diff changeset
    41
    RE_BRANCH: '/^branch/.+$/'
ff1d4b2df8bd ci: abstract the branch matching regexp
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52250
diff changeset
    42
    RE_TOPIC: '/^topic/.+/.+$/'
44251
2aa2408e7515 heptapod-ci: run test with python3 too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44250
diff changeset
    43
    PYTHON: python
51713
74f1bf147a6d heptapod-ci: use new v2.1 image
Raphaël Gomès <rgomes@octobus.net>
parents: 51712
diff changeset
    44
    HG_CI_IMAGE_TAG: "v2.1"
52211
4762133a56b3 ci: abstract the of absolute /tmp/ path
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52210
diff changeset
    45
    # a directory dedicated to creating files and temporary clone
4762133a56b3 ci: abstract the of absolute /tmp/ path
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52210
diff changeset
    46
    # with shell runner, its content is not cleaned from one call to the next,
4762133a56b3 ci: abstract the of absolute /tmp/ path
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52210
diff changeset
    47
    # so plan for it.
52212
d6ed4da850ea ci: move the "tempory work dir" to "concurrency-safe" location
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52211
diff changeset
    48
    TMP_WORK_DIR: "${CI_PROJECT_DIR}/../.."
52231
d0e728b0db0e wheel: assign CIBW_SKIP globally
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52229
diff changeset
    49
    # we use CIBW_SKIP="pp*" to prevent the building of pypy wheel that are neither
d0e728b0db0e wheel: assign CIBW_SKIP globally
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52229
diff changeset
    50
    # needed nor working.
d0e728b0db0e wheel: assign CIBW_SKIP globally
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52229
diff changeset
    51
    CIBW_SKIP: "pp*"
44251
2aa2408e7515 heptapod-ci: run test with python3 too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44250
diff changeset
    52
52208
75bc7557e49f ci: use extends instead of <<: *x
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52207
diff changeset
    53
.all:
75bc7557e49f ci: use extends instead of <<: *x
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52207
diff changeset
    54
  # help changing all job at once when debugging
49181
477b5145e1a0 ci: do not trigger phabricator for merge-request
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 49161
diff changeset
    55
  when: on_success
52208
75bc7557e49f ci: use extends instead of <<: *x
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52207
diff changeset
    56
  # make sure jobs from later steps does not wait for anything implicit before
75bc7557e49f ci: use extends instead of <<: *x
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52207
diff changeset
    57
  # starting.
52150
c99cbb02a82e ci: split the jobs on more stage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52149
diff changeset
    58
  needs: []
47825
f6879956a386 ci: add a "all" template to easily control "when" test run
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 47810
diff changeset
    59
52257
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
    60
# dummy job that serve dependencies purpose
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
    61
.dummy:
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
    62
  # smallest I know of
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
    63
  image: busybox
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
    64
  variables:
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
    65
    GIT_STRATEGY: none
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
    66
    CI_CLEVER_CLOUD_FLAVOR: "XS"
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
    67
  script:
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
    68
    - echo 'nothing to see here'
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
    69
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
    70
52249
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
    71
# a dummy job that only serve to trigger others
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
    72
#
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
    73
# This is useful for two reasons:
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
    74
# - the UX around parallel jobs is awful so manually starting them is unpractical
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
    75
# - manual starting job cannot make the pipeline "fails" and block a merge,
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
    76
#   while "on_success" job depending on manual trigger works fine in that regard.
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
    77
.trigger:
52257
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
    78
  extends:
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
    79
    - .all
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
    80
    - .dummy
52249
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
    81
  when: manual
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
    82
52258
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
    83
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
    84
trigger-nightly-build:
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
    85
  extends: .trigger
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
    86
  stage: nightly-trigger
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
    87
  rules:
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
    88
    - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
    89
      when: manual
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
    90
      allow_failure: true
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
    91
    - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
    92
      when: never
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
    93
52208
75bc7557e49f ci: use extends instead of <<: *x
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52207
diff changeset
    94
.build-wheel:
75bc7557e49f ci: use extends instead of <<: *x
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52207
diff changeset
    95
  extends: .all
52200
94ded8440db6 ci: use a pre-setup many-linux image to build wheel
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52199
diff changeset
    96
  image: "registry.heptapod.net/mercurial/ci-images/core-wheel-x86_64-c:v3.0"
52197
c32b17e8f414 ci: pre-adjust some identation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52156
diff changeset
    97
  stage: build
c32b17e8f414 ci: pre-adjust some identation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52156
diff changeset
    98
  variables:
c32b17e8f414 ci: pre-adjust some identation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52156
diff changeset
    99
    WHEEL_TYPE: ""
c32b17e8f414 ci: pre-adjust some identation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52156
diff changeset
   100
    FLAVOR: ""
52198
2c4283c9fa93 setup: add a way to force the setup to translate (or fail)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52197
diff changeset
   101
    MERCURIAL_SETUP_FORCE_TRANSLATIONS: "1"
52199
d22b6d6e02e1 ci: use smaller VM to build wheel
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52198
diff changeset
   102
    CI_CLEVER_CLOUD_FLAVOR: "XS"
52241
05addf266f6f wheel: add a platform level to the wheel directories
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52237
diff changeset
   103
  script:
05addf266f6f wheel: add a platform level to the wheel directories
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52237
diff changeset
   104
    - PLATFORM=`/opt/python/cp313-cp313/bin/python -c 'import sys; print(sys.platform)'`
52197
c32b17e8f414 ci: pre-adjust some identation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52156
diff changeset
   105
    - echo $WHEEL_TYPE
c32b17e8f414 ci: pre-adjust some identation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52156
diff changeset
   106
    - test -n "$WHEEL_TYPE"
c32b17e8f414 ci: pre-adjust some identation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52156
diff changeset
   107
    - echo $FLAVOR
52241
05addf266f6f wheel: add a platform level to the wheel directories
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52237
diff changeset
   108
    - mkdir -p wheels/$PLATFORM/$WHEEL_TYPE/$BUILD_PY_ID
52243
4d825ad10840 wheels: factor the core of Linux wheel building into a script
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52242
diff changeset
   109
    - contrib/build-one-linux-wheel.sh $BUILD_PY_ID wheels/$PLATFORM/$WHEEL_TYPE/$BUILD_PY_ID
52197
c32b17e8f414 ci: pre-adjust some identation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52156
diff changeset
   110
  artifacts:
c32b17e8f414 ci: pre-adjust some identation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52156
diff changeset
   111
    paths:
52241
05addf266f6f wheel: add a platform level to the wheel directories
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52237
diff changeset
   112
      - wheels/
52197
c32b17e8f414 ci: pre-adjust some identation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52156
diff changeset
   113
    expire_in: 1 week
52151
0de1895c2218 ci: build a wheel and use it to run c tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52150
diff changeset
   114
52258
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   115
52275
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   116
# build linux wheel for amd64
52151
0de1895c2218 ci: build a wheel and use it to run c tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52150
diff changeset
   117
build-c-wheel:
52208
75bc7557e49f ci: use extends instead of <<: *x
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52207
diff changeset
   118
  extends: .build-wheel
52197
c32b17e8f414 ci: pre-adjust some identation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52156
diff changeset
   119
  variables:
c32b17e8f414 ci: pre-adjust some identation
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52156
diff changeset
   120
    WHEEL_TYPE: "c"
52201
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   121
  parallel:
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   122
    matrix:
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   123
      - BUILD_PY_ID:
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   124
          - cp38-cp38
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   125
          - cp39-cp39
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   126
          - cp310-cp310
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   127
          - cp311-cp311
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   128
          - cp312-cp312
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   129
          - cp313-cp313
52151
0de1895c2218 ci: build a wheel and use it to run c tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52150
diff changeset
   130
52265
a1f2e25b6b38 wheel: also build the musl wheel in the ci
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52258
diff changeset
   131
trigger-wheel-musl:
a1f2e25b6b38 wheel: also build the musl wheel in the ci
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52258
diff changeset
   132
  extends: .trigger
a1f2e25b6b38 wheel: also build the musl wheel in the ci
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52258
diff changeset
   133
  stage: build
a1f2e25b6b38 wheel: also build the musl wheel in the ci
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52258
diff changeset
   134
  rules:
a1f2e25b6b38 wheel: also build the musl wheel in the ci
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52258
diff changeset
   135
  - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
a1f2e25b6b38 wheel: also build the musl wheel in the ci
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52258
diff changeset
   136
    when: never
a1f2e25b6b38 wheel: also build the musl wheel in the ci
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52258
diff changeset
   137
  - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC
a1f2e25b6b38 wheel: also build the musl wheel in the ci
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52258
diff changeset
   138
    when: manual
a1f2e25b6b38 wheel: also build the musl wheel in the ci
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52258
diff changeset
   139
    allow_failure: true
a1f2e25b6b38 wheel: also build the musl wheel in the ci
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52258
diff changeset
   140
a1f2e25b6b38 wheel: also build the musl wheel in the ci
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52258
diff changeset
   141
build-c-wheel-musl:
a1f2e25b6b38 wheel: also build the musl wheel in the ci
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52258
diff changeset
   142
  extends: build-c-wheel
a1f2e25b6b38 wheel: also build the musl wheel in the ci
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52258
diff changeset
   143
  image: "registry.heptapod.net/mercurial/ci-images/core-wheel-x86_64-musl-c:v3.0"
a1f2e25b6b38 wheel: also build the musl wheel in the ci
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52258
diff changeset
   144
  rules:
a1f2e25b6b38 wheel: also build the musl wheel in the ci
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52258
diff changeset
   145
  - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
a1f2e25b6b38 wheel: also build the musl wheel in the ci
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52258
diff changeset
   146
    needs:
a1f2e25b6b38 wheel: also build the musl wheel in the ci
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52258
diff changeset
   147
      - trigger-nightly-build
a1f2e25b6b38 wheel: also build the musl wheel in the ci
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52258
diff changeset
   148
  - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC
a1f2e25b6b38 wheel: also build the musl wheel in the ci
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52258
diff changeset
   149
    needs:
a1f2e25b6b38 wheel: also build the musl wheel in the ci
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52258
diff changeset
   150
      - "trigger-wheel-musl"
a1f2e25b6b38 wheel: also build the musl wheel in the ci
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52258
diff changeset
   151
52267
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   152
trigger-wheel-i686:
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   153
  extends: .trigger
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   154
  stage: build
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   155
  rules:
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   156
  - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   157
    when: never
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   158
  - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   159
    when: manual
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   160
    allow_failure: true
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   161
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   162
build-c-wheel-i686:
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   163
  extends: build-c-wheel
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   164
  image: "registry.heptapod.net/mercurial/ci-images/core-wheel-i686-c:v3.0"
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   165
  rules:
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   166
  - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   167
    needs:
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   168
      - trigger-nightly-build
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   169
  - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   170
    needs:
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   171
      - "trigger-wheel-i686"
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   172
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   173
trigger-wheel-i686-musl:
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   174
  extends: .trigger
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   175
  stage: build
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   176
  rules:
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   177
  - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   178
    when: never
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   179
  - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   180
    when: manual
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   181
    allow_failure: true
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   182
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   183
build-c-wheel-i686-musl:
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   184
  extends: build-c-wheel
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   185
  image: "registry.heptapod.net/mercurial/ci-images/core-wheel-i686-musl-c:v3.0"
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   186
  rules:
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   187
  - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   188
    needs:
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   189
      - trigger-nightly-build
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   190
  - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   191
    needs:
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   192
      - "trigger-wheel-i686-musl"
4550c024329d wheels: also build the i686 wheel in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52265
diff changeset
   193
52275
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   194
trigger-wheel-arm64:
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   195
  extends: .trigger
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   196
  stage: build
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   197
  rules:
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   198
  - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   199
    when: never
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   200
  - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   201
    when: manual
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   202
    allow_failure: true
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   203
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   204
build-c-wheel-arm64:
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   205
  extends: build-c-wheel
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   206
  image: "registry.heptapod.net/mercurial/ci-images/core-wheel-arm64-c:v3.0"
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   207
  tags:
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   208
    - arm64
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   209
  rules:
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   210
  - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   211
    needs:
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   212
      - trigger-nightly-build
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   213
  - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   214
    needs:
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   215
      - "trigger-wheel-arm64"
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   216
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   217
trigger-wheel-arm64-musl:
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   218
  extends: .trigger
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   219
  stage: build
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   220
  rules:
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   221
  - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   222
    when: never
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   223
  - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   224
    when: manual
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   225
    allow_failure: true
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   226
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   227
build-c-wheel-arm64-musl:
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   228
  extends: build-c-wheel
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   229
  image: "registry.heptapod.net/mercurial/ci-images/core-wheel-arm64-musl-c:v3.0"
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   230
  tags:
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   231
    - arm64
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   232
  rules:
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   233
  - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   234
    needs:
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   235
      - trigger-nightly-build
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   236
  - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   237
    needs:
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   238
      - "trigger-wheel-arm64-musl"
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   239
52208
75bc7557e49f ci: use extends instead of <<: *x
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52207
diff changeset
   240
.runtests:
75bc7557e49f ci: use extends instead of <<: *x
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52207
diff changeset
   241
    extends: .all
45959
3a3a510617e5 heptapod-ci: add a explicite "test" phases
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45897
diff changeset
   242
    stage: tests
52209
74a9fbc1b574 ci: move some variables closer to their usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52208
diff changeset
   243
    variables:
74a9fbc1b574 ci: move some variables closer to their usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52208
diff changeset
   244
      SHOW_VERSION_OF: "$PYTHON"
74a9fbc1b574 ci: move some variables closer to their usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52208
diff changeset
   245
      TEST_HGTESTS_ALLOW_NETIO: "0"
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   246
      FILTER: ""
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   247
      FLAVOR: ""
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   248
      RUNTEST_ARGS: ""
46244
fb69b51b4daa ci: avoid a global before_script definition
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 46146
diff changeset
   249
    # The runner made a clone as root.
fb69b51b4daa ci: avoid a global before_script definition
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 46146
diff changeset
   250
    # We make a new clone owned by user used to run the step.
fb69b51b4daa ci: avoid a global before_script definition
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 46146
diff changeset
   251
    before_script:
51712
e153995011b7 heptapod-ci: move version prints closer to the start
Raphaël Gomès <rgomes@octobus.net>
parents: 51700
diff changeset
   252
      - echo "python used, $PYTHON"
52002
22a50b7934d2 ci: display tool version more selectively
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51994
diff changeset
   253
      - for tool in $SHOW_VERSION_OF ; do echo '#' version of $tool; $tool --version; done
52211
4762133a56b3 ci: abstract the of absolute /tmp/ path
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52210
diff changeset
   254
      - rm -rf "${TMP_WORK_DIR}"/mercurial-ci/  # Clean slate if not using containers
4762133a56b3 ci: abstract the of absolute /tmp/ path
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52210
diff changeset
   255
      - hg clone . "${TMP_WORK_DIR}"/mercurial-ci/ --noupdate --config phases.publish=no
4762133a56b3 ci: abstract the of absolute /tmp/ path
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52210
diff changeset
   256
      - hg -R "${TMP_WORK_DIR}"/mercurial-ci/ update `hg log --rev '.' --template '{node}'`
4762133a56b3 ci: abstract the of absolute /tmp/ path
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52210
diff changeset
   257
      - cd "${TMP_WORK_DIR}"/mercurial-ci/
4762133a56b3 ci: abstract the of absolute /tmp/ path
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52210
diff changeset
   258
      - ls -1 tests/test-check-*.* > "${TMP_WORK_DIR}"/check-tests.txt
44249
8b1dd3f42396 heptapod-ci: add a basic file to be able to run tests with heptapod
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
diff changeset
   259
    script:
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   260
        - echo "$TEST_HGTESTS_ALLOW_NETIO"
44253
8814308e83bb heptapod-ci: run the normal test suite
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44252
diff changeset
   261
        - echo "$RUNTEST_ARGS"
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   262
        - echo "$FILTER"
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   263
        - echo "$FLAVOR"
52151
0de1895c2218 ci: build a wheel and use it to run c tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52150
diff changeset
   264
        - echo "$WHEEL_TYPE"
52213
63ad6b0c2b6a ci: adjust the starting port range to runner concurrency
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52212
diff changeset
   265
        - PORT_START=`expr 19051 + 1009 '*' $CI_CONCURRENT_ID`
63ad6b0c2b6a ci: adjust the starting port range to runner concurrency
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52212
diff changeset
   266
        - PORT_ARG="--port $PORT_START"
63ad6b0c2b6a ci: adjust the starting port range to runner concurrency
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52212
diff changeset
   267
        - echo $PORT_ARG
52241
05addf266f6f wheel: add a platform level to the wheel directories
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52237
diff changeset
   268
        - PLATFORM=`$PYTHON -c 'import sys; print(sys.platform)'`
05addf266f6f wheel: add a platform level to the wheel directories
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52237
diff changeset
   269
        - echo $PLATFORM
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   270
        - WHEEL_ARG=""
52216
fa58f4f97337 ci: shard the test run on mac os X
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52214
diff changeset
   271
        - SHARDING_ARGS=""
52151
0de1895c2218 ci: build a wheel and use it to run c tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52150
diff changeset
   272
        - if test -n "$WHEEL_TYPE"; then
52203
5ea21e0c28aa ci: automatically compute the python tag we use to identify tag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52201
diff changeset
   273
             PY_TAG=`$PYTHON -c 'import sys; v=sys.version_info; t=f"cp{v.major}{v.minor}"; print(f"{t}-{t}")'`;
5ea21e0c28aa ci: automatically compute the python tag we use to identify tag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52201
diff changeset
   274
             echo "$PY_TAG";
5ea21e0c28aa ci: automatically compute the python tag we use to identify tag
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52201
diff changeset
   275
             test -n "PY_TAG";
52241
05addf266f6f wheel: add a platform level to the wheel directories
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52237
diff changeset
   276
             WHEEL="`ls -1 $CI_PROJECT_DIR/wheels/$PLATFORM/$WHEEL_TYPE/$PY_TAG/*.whl`";
52151
0de1895c2218 ci: build a wheel and use it to run c tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52150
diff changeset
   277
             test -n "$WHEEL";
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   278
             echo installing from $WHEEL;
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   279
             WHEEL_ARG="--hg-wheel $WHEEL";
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   280
             echo disabling flavor as this is currently incompatible with '"--hg-wheel"';
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   281
             FLAVOR="";
52151
0de1895c2218 ci: build a wheel and use it to run c tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52150
diff changeset
   282
          else
0de1895c2218 ci: build a wheel and use it to run c tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52150
diff changeset
   283
            echo installing from source;
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   284
          fi;
52216
fa58f4f97337 ci: shard the test run on mac os X
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52214
diff changeset
   285
        - if [ -n "$CI_NODE_INDEX" ]; then 
fa58f4f97337 ci: shard the test run on mac os X
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52214
diff changeset
   286
            echo "Running the test in multiple shard - [$CI_NODE_INDEX/$CI_NODE_TOTAL]";
fa58f4f97337 ci: shard the test run on mac os X
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52214
diff changeset
   287
            SHARDING_ARGS="--shard-index $CI_NODE_INDEX --shard-total $CI_NODE_TOTAL";
fa58f4f97337 ci: shard the test run on mac os X
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52214
diff changeset
   288
            echo "sharding... $SHARDING_ARGS";
fa58f4f97337 ci: shard the test run on mac os X
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52214
diff changeset
   289
          fi
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   290
        - HGTESTS_ALLOW_NETIO="$TEST_HGTESTS_ALLOW_NETIO"
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   291
          "$PYTHON" tests/run-tests.py
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   292
            --color=always
52213
63ad6b0c2b6a ci: adjust the starting port range to runner concurrency
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52212
diff changeset
   293
            $PORT_ARG
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   294
            $WHEEL_ARG
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   295
            $FLAVOR
52216
fa58f4f97337 ci: shard the test run on mac os X
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52214
diff changeset
   296
            $SHARDING_ARGS
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   297
            $FILTER
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   298
            $RUNTEST_ARGS;
44251
2aa2408e7515 heptapod-ci: run test with python3 too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44250
diff changeset
   299
48949
469b9ee336a6 heptapod-ci: remove useless mentions of Python 3
Raphaël Gomès <rgomes@octobus.net>
parents: 48799
diff changeset
   300
checks:
52208
75bc7557e49f ci: use extends instead of <<: *x
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52207
diff changeset
   301
    extends: .runtests
52150
c99cbb02a82e ci: split the jobs on more stage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52149
diff changeset
   302
    stage: checks
44251
2aa2408e7515 heptapod-ci: run test with python3 too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44250
diff changeset
   303
    variables:
52002
22a50b7934d2 ci: display tool version more selectively
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51994
diff changeset
   304
        SHOW_VERSION_OF: "$PYTHON black clang-format"
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   305
        RUNTEST_ARGS: "--time"
52211
4762133a56b3 ci: abstract the of absolute /tmp/ path
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52210
diff changeset
   306
        FILTER: "--test-list ${TMP_WORK_DIR}/check-tests.txt"
49945
d00ac86fbd78 contrib: adjust heptapod CI flavor sizes
Raphaël Gomès <rgomes@octobus.net>
parents: 49506
diff changeset
   307
        CI_CLEVER_CLOUD_FLAVOR: S
44252
5fd43c788943 heptapod-ci: also run the dedicated rust test for the rust code
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44251
diff changeset
   308
48949
469b9ee336a6 heptapod-ci: remove useless mentions of Python 3
Raphaël Gomès <rgomes@octobus.net>
parents: 48799
diff changeset
   309
rust-cargo-test:
52208
75bc7557e49f ci: use extends instead of <<: *x
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52207
diff changeset
   310
    extends: .all
52150
c99cbb02a82e ci: split the jobs on more stage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52149
diff changeset
   311
    stage: checks
44252
5fd43c788943 heptapod-ci: also run the dedicated rust test for the rust code
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44251
diff changeset
   312
    script:
5fd43c788943 heptapod-ci: also run the dedicated rust test for the rust code
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44251
diff changeset
   313
        - make rust-tests
49940
86958104b6ca heptapod-ci: add `clippy` to the CI
Raphaël Gomès <rgomes@octobus.net>
parents: 49654
diff changeset
   314
        - make cargo-clippy
44252
5fd43c788943 heptapod-ci: also run the dedicated rust test for the rust code
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44251
diff changeset
   315
    variables:
49945
d00ac86fbd78 contrib: adjust heptapod CI flavor sizes
Raphaël Gomès <rgomes@octobus.net>
parents: 49506
diff changeset
   316
        CI_CLEVER_CLOUD_FLAVOR: S
44252
5fd43c788943 heptapod-ci: also run the dedicated rust test for the rust code
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44251
diff changeset
   317
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   318
.runtests-no-check:
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   319
  extends: .runtests
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   320
  variables:
52211
4762133a56b3 ci: abstract the of absolute /tmp/ path
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52210
diff changeset
   321
      FILTER: "--blacklist ${TMP_WORK_DIR}/check-tests.txt"
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   322
      TEST_HGTESTS_ALLOW_NETIO: "1"
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   323
52208
75bc7557e49f ci: use extends instead of <<: *x
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52207
diff changeset
   324
.test-c:
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   325
    extends: .runtests-no-check
44253
8814308e83bb heptapod-ci: run the normal test suite
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44252
diff changeset
   326
    variables:
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   327
        FLAVOR: "--no-rust"
44254
6733c565ca46 heptapod-ci: run the --pure test too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44253
diff changeset
   328
52151
0de1895c2218 ci: build a wheel and use it to run c tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52150
diff changeset
   329
test-c:
52208
75bc7557e49f ci: use extends instead of <<: *x
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52207
diff changeset
   330
    extends: .test-c
52201
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   331
    needs:
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   332
      - job: build-c-wheel
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   333
        parallel:
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   334
          matrix:
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   335
            - BUILD_PY_ID: "cp311-cp311"
52151
0de1895c2218 ci: build a wheel and use it to run c tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52150
diff changeset
   336
    variables:
0de1895c2218 ci: build a wheel and use it to run c tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52150
diff changeset
   337
        WHEEL_TYPE: "c"
0de1895c2218 ci: build a wheel and use it to run c tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52150
diff changeset
   338
48949
469b9ee336a6 heptapod-ci: remove useless mentions of Python 3
Raphaël Gomès <rgomes@octobus.net>
parents: 48799
diff changeset
   339
test-pure:
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   340
    extends: .runtests-no-check
44254
6733c565ca46 heptapod-ci: run the --pure test too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44253
diff changeset
   341
    variables:
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   342
        FLAVOR: "--pure"
44255
541a509a47a8 heptapod-ci: add a job to test the rust version of Mercurial
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44254
diff changeset
   343
52208
75bc7557e49f ci: use extends instead of <<: *x
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52207
diff changeset
   344
test-rust:
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   345
    extends: .runtests-no-check
44255
541a509a47a8 heptapod-ci: add a job to test the rust version of Mercurial
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44254
diff changeset
   346
    variables:
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   347
        HGWITHRUSTEXT: "cpython"
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   348
        FLAVOR: "--rust"
44936
aa568b6c6a10 heptapod-ci: also run tests for chg on python 2
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 44577
diff changeset
   349
48949
469b9ee336a6 heptapod-ci: remove useless mentions of Python 3
Raphaël Gomès <rgomes@octobus.net>
parents: 48799
diff changeset
   350
test-rhg:
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   351
    extends: .runtests-no-check
46755
6b5714479288 ci: Add a job testing with rhg installed as `hg`
Simon Sapin <simon.sapin@octobus.net>
parents: 46676
diff changeset
   352
    variables:
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   353
        HGWITHRUSTEXT: "cpython"
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   354
        FLAVOR: "--rust --rhg"
46755
6b5714479288 ci: Add a job testing with rhg installed as `hg`
Simon Sapin <simon.sapin@octobus.net>
parents: 46676
diff changeset
   355
48949
469b9ee336a6 heptapod-ci: remove useless mentions of Python 3
Raphaël Gomès <rgomes@octobus.net>
parents: 48799
diff changeset
   356
test-chg:
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   357
    extends: .runtests-no-check
46146
d109dda4a3e7 contrib: run python3+chg tests too in heptapod CI
Pulkit Goyal <7895pulkit@gmail.com>
parents: 46045
diff changeset
   358
    variables:
52210
b3d6afa6ebbf ci: rationalize variable usage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52209
diff changeset
   359
        FLAVOR: "--chg"
47081
e917fa36fb58 heptapod-ci: enable pytype checking
Matt Harbison <matt_harbison@yahoo.com>
parents: 46980
diff changeset
   360
52249
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
   361
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
   362
trigger-pycompat:
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
   363
  extends: .trigger
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
   364
  stage: py-version-compat
52258
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   365
  rules:
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   366
  - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   367
    when: on_success
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   368
    needs:
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   369
      - trigger-nightly-build
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   370
  - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   371
    when: manual
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   372
    allow_failure: true
52249
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
   373
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
   374
.test-c-pycompat:
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
   375
    extends: .test-c
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
   376
    stage: py-version-compat
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
   377
    variables:
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
   378
        WHEEL_TYPE: "c"
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
   379
51846
243e805e8a2d ci: add the option to test more Python versions
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51835
diff changeset
   380
# note: we should probably get a full matrix for flavor × py-version, but this
243e805e8a2d ci: add the option to test more Python versions
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51835
diff changeset
   381
# is a simple start to be able to check if we break the lowest supported
243e805e8a2d ci: add the option to test more Python versions
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51835
diff changeset
   382
# version (and 3.12 have been giving us various troubles)
243e805e8a2d ci: add the option to test more Python versions
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51835
diff changeset
   383
test-3.8-c:
52249
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
   384
    extends: .test-c-pycompat
51846
243e805e8a2d ci: add the option to test more Python versions
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51835
diff changeset
   385
    variables:
243e805e8a2d ci: add the option to test more Python versions
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51835
diff changeset
   386
        PYTHON: python3.8
52201
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   387
    needs:
52258
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   388
      - job: trigger-pycompat
52201
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   389
      - job: build-c-wheel
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   390
        parallel:
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   391
          matrix:
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   392
            - BUILD_PY_ID: "cp38-cp38"
51846
243e805e8a2d ci: add the option to test more Python versions
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51835
diff changeset
   393
243e805e8a2d ci: add the option to test more Python versions
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51835
diff changeset
   394
test-3.12-c:
52249
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
   395
    extends: .test-c-pycompat
51846
243e805e8a2d ci: add the option to test more Python versions
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51835
diff changeset
   396
    variables:
243e805e8a2d ci: add the option to test more Python versions
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51835
diff changeset
   397
        PYTHON: python3.12
52201
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   398
    needs:
52258
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   399
      - job: trigger-pycompat
52201
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   400
      - job: build-c-wheel
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   401
        parallel:
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   402
          matrix:
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   403
            - BUILD_PY_ID: "cp312-cp312"
51846
243e805e8a2d ci: add the option to test more Python versions
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51835
diff changeset
   404
51847
a3a9251c6081 ci: also offer to test 3.12 with rust
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51846
diff changeset
   405
test-3.12-rust:
52208
75bc7557e49f ci: use extends instead of <<: *x
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52207
diff changeset
   406
    extends: test-rust
52150
c99cbb02a82e ci: split the jobs on more stage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52149
diff changeset
   407
    stage: py-version-compat
52249
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
   408
    needs:
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
   409
      - trigger-pycompat
51847
a3a9251c6081 ci: also offer to test 3.12 with rust
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51846
diff changeset
   410
    variables:
a3a9251c6081 ci: also offer to test 3.12 with rust
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51846
diff changeset
   411
        PYTHON: python3.12
a3a9251c6081 ci: also offer to test 3.12 with rust
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51846
diff changeset
   412
51994
baf9e3a8fd14 ci: also offer tests with Python 3.13
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51963
diff changeset
   413
test-3.13-c:
52249
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
   414
    extends: .test-c-pycompat
51994
baf9e3a8fd14 ci: also offer tests with Python 3.13
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51963
diff changeset
   415
    variables:
baf9e3a8fd14 ci: also offer tests with Python 3.13
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51963
diff changeset
   416
        PYTHON: python3.13
52201
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   417
    needs:
52258
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   418
      - job: trigger-pycompat
52201
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   419
      - job: build-c-wheel
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   420
        parallel:
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   421
          matrix:
7dd466f13f9b ci: build (and use) wheel for all supported version
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52200
diff changeset
   422
            - BUILD_PY_ID: "cp313-cp313"
51994
baf9e3a8fd14 ci: also offer tests with Python 3.13
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51963
diff changeset
   423
baf9e3a8fd14 ci: also offer tests with Python 3.13
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51963
diff changeset
   424
test-3.13-rust:
52208
75bc7557e49f ci: use extends instead of <<: *x
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52207
diff changeset
   425
    extends: test-rust
52150
c99cbb02a82e ci: split the jobs on more stage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52149
diff changeset
   426
    stage: py-version-compat
52249
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
   427
    needs:
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
   428
      - trigger-pycompat
51994
baf9e3a8fd14 ci: also offer tests with Python 3.13
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51963
diff changeset
   429
    variables:
baf9e3a8fd14 ci: also offer tests with Python 3.13
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51963
diff changeset
   430
        PYTHON: python3.13
baf9e3a8fd14 ci: also offer tests with Python 3.13
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 51963
diff changeset
   431
48949
469b9ee336a6 heptapod-ci: remove useless mentions of Python 3
Raphaël Gomès <rgomes@octobus.net>
parents: 48799
diff changeset
   432
check-pytype:
52208
75bc7557e49f ci: use extends instead of <<: *x
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52207
diff changeset
   433
    extends: test-rust
52150
c99cbb02a82e ci: split the jobs on more stage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52149
diff changeset
   434
    stage: checks
47081
e917fa36fb58 heptapod-ci: enable pytype checking
Matt Harbison <matt_harbison@yahoo.com>
parents: 46980
diff changeset
   435
    before_script:
51713
74f1bf147a6d heptapod-ci: use new v2.1 image
Raphaël Gomès <rgomes@octobus.net>
parents: 51712
diff changeset
   436
      - 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"
74f1bf147a6d heptapod-ci: use new v2.1 image
Raphaël Gomès <rgomes@octobus.net>
parents: 51712
diff changeset
   437
      - echo "PATH, $PATH"
52211
4762133a56b3 ci: abstract the of absolute /tmp/ path
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52210
diff changeset
   438
      - hg clone . "${TMP_WORK_DIR}"/mercurial-ci/ --noupdate --config phases.publish=no
4762133a56b3 ci: abstract the of absolute /tmp/ path
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52210
diff changeset
   439
      - hg -R "${TMP_WORK_DIR}"/mercurial-ci/ update `hg log --rev '.' --template '{node}'`
4762133a56b3 ci: abstract the of absolute /tmp/ path
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52210
diff changeset
   440
      - cd "${TMP_WORK_DIR}"/mercurial-ci/
47081
e917fa36fb58 heptapod-ci: enable pytype checking
Matt Harbison <matt_harbison@yahoo.com>
parents: 46980
diff changeset
   441
      - make local PYTHON=$PYTHON
49653
556efeea6dbf ci: run the script to add vendored type stubs to typeshed
Matt Harbison <matt_harbison@yahoo.com>
parents: 49506
diff changeset
   442
      - ./contrib/setup-pytype.sh
49502
dbdee8ac3e3f heptapod-ci: use shell script in pytype step
Raphaël Gomès <rgomes@octobus.net>
parents: 49279
diff changeset
   443
    script:
dbdee8ac3e3f heptapod-ci: use shell script in pytype step
Raphaël Gomès <rgomes@octobus.net>
parents: 49279
diff changeset
   444
      - echo "Entering script section"
dbdee8ac3e3f heptapod-ci: use shell script in pytype step
Raphaël Gomès <rgomes@octobus.net>
parents: 49279
diff changeset
   445
      - sh contrib/check-pytype.sh
47570
bc01b8ad6134 ci-windows: introduce manual windows CI
Raphaël Gomès <rgomes@octobus.net>
parents: 47081
diff changeset
   446
bc01b8ad6134 ci-windows: introduce manual windows CI
Raphaël Gomès <rgomes@octobus.net>
parents: 47081
diff changeset
   447
# `sh.exe --login` sets a couple of extra environment variables that are defined
bc01b8ad6134 ci-windows: introduce manual windows CI
Raphaël Gomès <rgomes@octobus.net>
parents: 47081
diff changeset
   448
# in the MinGW shell, but switches CWD to /home/$username.  The previous value
bc01b8ad6134 ci-windows: introduce manual windows CI
Raphaël Gomès <rgomes@octobus.net>
parents: 47081
diff changeset
   449
# is stored in OLDPWD.  Of the added variables, MSYSTEM is crucial to running
bc01b8ad6134 ci-windows: introduce manual windows CI
Raphaël Gomès <rgomes@octobus.net>
parents: 47081
diff changeset
   450
# run-tests.py- it is needed to make run-tests.py generate a `python3` script
bc01b8ad6134 ci-windows: introduce manual windows CI
Raphaël Gomès <rgomes@octobus.net>
parents: 47081
diff changeset
   451
# that satisfies the various shebang lines and delegates to `py -3`.
52226
b25fc1f25edf ci: again common element into a `.windows` template
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52225
diff changeset
   452
b25fc1f25edf ci: again common element into a `.windows` template
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52225
diff changeset
   453
.windows:
52208
75bc7557e49f ci: use extends instead of <<: *x
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52207
diff changeset
   454
    extends: .all
48522
b52cf5063865 heptapod-ci: make Windows jobs manual again
Raphaël Gomès <rgomes@octobus.net>
parents: 48328
diff changeset
   455
    when: manual  # we don't have any Windows runners anymore at the moment
52226
b25fc1f25edf ci: again common element into a `.windows` template
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52225
diff changeset
   456
    tags:
b25fc1f25edf ci: again common element into a `.windows` template
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52225
diff changeset
   457
      - windows
47570
bc01b8ad6134 ci-windows: introduce manual windows CI
Raphaël Gomès <rgomes@octobus.net>
parents: 47081
diff changeset
   458
    before_script:
52211
4762133a56b3 ci: abstract the of absolute /tmp/ path
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52210
diff changeset
   459
      - C:/hgdev/MinGW/msys/1.0/bin/sh.exe --login -c 'cd "$OLDPWD" && ls -1 tests/test-check-*.* > "${TMP_WORK_DIR}"/check-tests.txt'
47570
bc01b8ad6134 ci-windows: introduce manual windows CI
Raphaël Gomès <rgomes@octobus.net>
parents: 47081
diff changeset
   460
      # TODO: find/install cvs, bzr, perforce, gpg, sqlite3
52226
b25fc1f25edf ci: again common element into a `.windows` template
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52225
diff changeset
   461
    variables:
b25fc1f25edf ci: again common element into a `.windows` template
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52225
diff changeset
   462
        PYTHON: C:/hgdev/venvs/python39-x64/Scripts/python.exe
47570
bc01b8ad6134 ci-windows: introduce manual windows CI
Raphaël Gomès <rgomes@octobus.net>
parents: 47081
diff changeset
   463
52233
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   464
# a dummy job that only serve to trigger the wider windows build
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   465
trigger-wheel-windows:
52249
16e5de783a1b ci: adds a trigger for all pycompat jobs
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52248
diff changeset
   466
  extends: .trigger
52233
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   467
  stage: build
52258
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   468
  rules:
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   469
  - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   470
    when: never
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   471
  - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   472
    when: manual
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   473
    allow_failure: true
52233
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   474
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   475
build-c-wheel-windows:
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   476
    extends: .windows
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   477
    stage: build
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   478
    # wait for someone to click on "trigger-wheel-windows"
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   479
    when: on_success
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   480
    needs:
52258
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   481
    rules:
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   482
    - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   483
      needs:
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   484
        - trigger-nightly-build
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   485
    - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   486
      needs:
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   487
        - "trigger-wheel-windows"
52237
4602e90207f3 wheel: enforce that translation being build for windows wheel
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52236
diff changeset
   488
    variables:
4602e90207f3 wheel: enforce that translation being build for windows wheel
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52236
diff changeset
   489
      MERCURIAL_SETUP_FORCE_TRANSLATIONS: "1"
52233
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   490
    script:
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   491
        - echo "Entering script section"
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   492
        - echo "python used, $Env:PYTHON"
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   493
        - Invoke-Expression "$Env:PYTHON -V"
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   494
        - echo "$Env:RUNTEST_ARGS"
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   495
        - echo "$Env:TMP"
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   496
        - echo "$Env:TEMP"
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   497
        - "C:/hgdev/venvs/python39-x64/Scripts/python.exe -m cibuildwheel --output-dir wheels/win32"
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   498
    artifacts:
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   499
      paths:
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   500
        - wheels
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   501
      expire_in: 1 week
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   502
    parallel:
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   503
      matrix:
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   504
        # "cp39" is first as it unlock the tests
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   505
        - CIBW_BUILD:
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   506
          - "cp39-*"
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   507
          - "cp38-*"
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   508
          - "cp310-*"
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   509
          - "cp311-*"
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   510
          - "cp312-*"
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   511
          - "cp313-*"
52234
6c777d25e8a6 wheel: explicitly list built architecture
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52233
diff changeset
   512
          CIBW_ARCHS:
6c777d25e8a6 wheel: explicitly list built architecture
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52233
diff changeset
   513
          - "AMD64"
6c777d25e8a6 wheel: explicitly list built architecture
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52233
diff changeset
   514
          - "x86"
52248
084e7ae69ae4 wheel: build windows wheel for ARM64 too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52243
diff changeset
   515
        - CIBW_BUILD:
084e7ae69ae4 wheel: build windows wheel for ARM64 too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52243
diff changeset
   516
          - "cp311-*"
084e7ae69ae4 wheel: build windows wheel for ARM64 too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52243
diff changeset
   517
          - "cp312-*"
084e7ae69ae4 wheel: build windows wheel for ARM64 too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52243
diff changeset
   518
          - "cp313-*"
084e7ae69ae4 wheel: build windows wheel for ARM64 too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52243
diff changeset
   519
          CIBW_ARCHS:
084e7ae69ae4 wheel: build windows wheel for ARM64 too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52243
diff changeset
   520
          - "ARM64"
52233
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   521
e25e4647437b wheel: build Windows wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52231
diff changeset
   522
52226
b25fc1f25edf ci: again common element into a `.windows` template
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52225
diff changeset
   523
.windows-runtests:
b25fc1f25edf ci: again common element into a `.windows` template
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52225
diff changeset
   524
    extends: .windows
b25fc1f25edf ci: again common element into a `.windows` template
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52225
diff changeset
   525
    stage: platform-compat
52236
48f772a5c476 ci: shard the tests on windows too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52235
diff changeset
   526
    # the UX for manual parallel jobs is quite awful, and the job que depends
48f772a5c476 ci: shard the tests on windows too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52235
diff changeset
   527
    # upon are manual anyway, so we can make this start automatically once the
48f772a5c476 ci: shard the tests on windows too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52235
diff changeset
   528
    # associated wheel is ready.
48f772a5c476 ci: shard the tests on windows too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52235
diff changeset
   529
    when: on_success
48f772a5c476 ci: shard the tests on windows too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52235
diff changeset
   530
    parallel: 20
47570
bc01b8ad6134 ci-windows: introduce manual windows CI
Raphaël Gomès <rgomes@octobus.net>
parents: 47081
diff changeset
   531
    script:
bc01b8ad6134 ci-windows: introduce manual windows CI
Raphaël Gomès <rgomes@octobus.net>
parents: 47081
diff changeset
   532
        - echo "Entering script section"
bc01b8ad6134 ci-windows: introduce manual windows CI
Raphaël Gomès <rgomes@octobus.net>
parents: 47081
diff changeset
   533
        - echo "python used, $Env:PYTHON"
bc01b8ad6134 ci-windows: introduce manual windows CI
Raphaël Gomès <rgomes@octobus.net>
parents: 47081
diff changeset
   534
        - Invoke-Expression "$Env:PYTHON -V"
52227
f514c5acfdd6 ci: split the windows runtest invocation into more granular variables
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52226
diff changeset
   535
        - echo "$Env:HGTESTS_ALLOW_NETIO"
52235
8cacf7952f14 wheel: test the built wheel in the windows tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52234
diff changeset
   536
        - echo "$Env:WHEEL_ARG"
52227
f514c5acfdd6 ci: split the windows runtest invocation into more granular variables
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52226
diff changeset
   537
        - echo "$Env:FLAVOR"
f514c5acfdd6 ci: split the windows runtest invocation into more granular variables
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52226
diff changeset
   538
        - echo "$Env:FILTER"
47570
bc01b8ad6134 ci-windows: introduce manual windows CI
Raphaël Gomès <rgomes@octobus.net>
parents: 47081
diff changeset
   539
        - echo "$Env:RUNTEST_ARGS"
47806
d5d46dcd356b windows-ci: clean up the Heptapod CI file now that the baseline is solid
Raphaël Gomès <rgomes@octobus.net>
parents: 47792
diff changeset
   540
        - echo "$Env:TMP"
d5d46dcd356b windows-ci: clean up the Heptapod CI file now that the baseline is solid
Raphaël Gomès <rgomes@octobus.net>
parents: 47792
diff changeset
   541
        - echo "$Env:TEMP"
52228
be1f06902861 windows: skip test-clonebundles-autogen.t in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52227
diff changeset
   542
        # This test is hanging the worker and not that important, so lets skip
be1f06902861 windows: skip test-clonebundles-autogen.t in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52227
diff changeset
   543
        # it for now
be1f06902861 windows: skip test-clonebundles-autogen.t in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52227
diff changeset
   544
        - C:/hgdev/MinGW/msys/1.0/bin/sh.exe -c 'cd "$OLDPWD" && echo tests/test-clonebundles-autogen.t > $TMP_WORK_DIR/windows-skip.txt'
47570
bc01b8ad6134 ci-windows: introduce manual windows CI
Raphaël Gomès <rgomes@octobus.net>
parents: 47081
diff changeset
   545
52227
f514c5acfdd6 ci: split the windows runtest invocation into more granular variables
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52226
diff changeset
   546
        - C:/hgdev/MinGW/msys/1.0/bin/sh.exe
f514c5acfdd6 ci: split the windows runtest invocation into more granular variables
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52226
diff changeset
   547
          --login -c 'cd "$OLDPWD"
f514c5acfdd6 ci: split the windows runtest invocation into more granular variables
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52226
diff changeset
   548
            && HGTESTS_ALLOW_NETIO="$TEST_HGTESTS_ALLOW_NETIO"
f514c5acfdd6 ci: split the windows runtest invocation into more granular variables
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52226
diff changeset
   549
               $PYTHON tests/run-tests.py
f514c5acfdd6 ci: split the windows runtest invocation into more granular variables
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52226
diff changeset
   550
               --color=always
52235
8cacf7952f14 wheel: test the built wheel in the windows tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52234
diff changeset
   551
               $WHEEL_ARG
52227
f514c5acfdd6 ci: split the windows runtest invocation into more granular variables
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52226
diff changeset
   552
               $FLAVOR
52229
4bbb4fc9af3b ci: adjust port range on windows too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52228
diff changeset
   553
               --port `expr 19051 + 1009 "*" $CI_CONCURRENT_ID`
52236
48f772a5c476 ci: shard the tests on windows too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52235
diff changeset
   554
               --shard-index $CI_NODE_INDEX --shard-total $CI_NODE_TOTAL
52227
f514c5acfdd6 ci: split the windows runtest invocation into more granular variables
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52226
diff changeset
   555
               $FILTER
f514c5acfdd6 ci: split the windows runtest invocation into more granular variables
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52226
diff changeset
   556
               $RUNTEST_ARGS;
f514c5acfdd6 ci: split the windows runtest invocation into more granular variables
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52226
diff changeset
   557
          '
f514c5acfdd6 ci: split the windows runtest invocation into more granular variables
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52226
diff changeset
   558
    variables:
52235
8cacf7952f14 wheel: test the built wheel in the windows tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52234
diff changeset
   559
      WHEEL_ARG: ""
52227
f514c5acfdd6 ci: split the windows runtest invocation into more granular variables
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52226
diff changeset
   560
      RUNTEST_ARGS: ""
f514c5acfdd6 ci: split the windows runtest invocation into more granular variables
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52226
diff changeset
   561
      FLAVOR: ""
52228
be1f06902861 windows: skip test-clonebundles-autogen.t in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52227
diff changeset
   562
      FILTER: "--blacklist ${TMP_WORK_DIR}/check-tests.txt --blacklist ${TMP_WORK_DIR}/windows-skip.txt"
47570
bc01b8ad6134 ci-windows: introduce manual windows CI
Raphaël Gomès <rgomes@octobus.net>
parents: 47081
diff changeset
   563
48949
469b9ee336a6 heptapod-ci: remove useless mentions of Python 3
Raphaël Gomès <rgomes@octobus.net>
parents: 48799
diff changeset
   564
windows:
52208
75bc7557e49f ci: use extends instead of <<: *x
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52207
diff changeset
   565
    extends: .windows-runtests
47570
bc01b8ad6134 ci-windows: introduce manual windows CI
Raphaël Gomès <rgomes@octobus.net>
parents: 47081
diff changeset
   566
    variables:
52250
05953a37c608 ci: let the Windows runner decide how many job they want to run
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52249
diff changeset
   567
        RUNTEST_ARGS: ""
52235
8cacf7952f14 wheel: test the built wheel in the windows tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52234
diff changeset
   568
        WHEEL_ARG: "--hg-wheel wheels/win32/mercurial-*-cp39-cp39-win_amd64.whl"
8cacf7952f14 wheel: test the built wheel in the windows tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52234
diff changeset
   569
    needs:
8cacf7952f14 wheel: test the built wheel in the windows tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52234
diff changeset
   570
      - job: build-c-wheel-windows
8cacf7952f14 wheel: test the built wheel in the windows tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52234
diff changeset
   571
        parallel:
8cacf7952f14 wheel: test the built wheel in the windows tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52234
diff changeset
   572
          matrix:
8cacf7952f14 wheel: test the built wheel in the windows tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52234
diff changeset
   573
            - CIBW_BUILD: "cp39-*"
8cacf7952f14 wheel: test the built wheel in the windows tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52234
diff changeset
   574
              CIBW_ARCHS: "AMD64"
47827
9261326dd032 ci: run --pyoxidized tests on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents: 47825
diff changeset
   575
48949
469b9ee336a6 heptapod-ci: remove useless mentions of Python 3
Raphaël Gomès <rgomes@octobus.net>
parents: 48799
diff changeset
   576
windows-pyox:
52208
75bc7557e49f ci: use extends instead of <<: *x
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52207
diff changeset
   577
    extends: .windows-runtests
52156
8766d47edfd1 ci: add a runner for Windows 10
Matt Harbison <matt_harbison@yahoo.com>
parents: 52151
diff changeset
   578
    when: manual  # pyoxidizer builds seem broken with --no-use-pep517
47827
9261326dd032 ci: run --pyoxidized tests on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents: 47825
diff changeset
   579
    variables:
52227
f514c5acfdd6 ci: split the windows runtest invocation into more granular variables
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52226
diff changeset
   580
        FLAVOR: "--pyoxidized"
52014
941141c2c475 ci: add a runner for macos
Matt Harbison <matt_harbison@yahoo.com>
parents: 52002
diff changeset
   581
941141c2c475 ci: add a runner for macos
Matt Harbison <matt_harbison@yahoo.com>
parents: 52002
diff changeset
   582
macos:
52208
75bc7557e49f ci: use extends instead of <<: *x
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52207
diff changeset
   583
    extends: .test-c
52150
c99cbb02a82e ci: split the jobs on more stage
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52149
diff changeset
   584
    stage: platform-compat
52216
fa58f4f97337 ci: shard the test run on mac os X
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52214
diff changeset
   585
    # run the test in multiple shard to help spread the load between concurrent
fa58f4f97337 ci: shard the test run on mac os X
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52214
diff changeset
   586
    # MR as the macos runner is a shell runner there is not startup overhead
fa58f4f97337 ci: shard the test run on mac os X
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52214
diff changeset
   587
    # for tests.
fa58f4f97337 ci: shard the test run on mac os X
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52214
diff changeset
   588
    parallel: 10
52014
941141c2c475 ci: add a runner for macos
Matt Harbison <matt_harbison@yahoo.com>
parents: 52002
diff changeset
   589
    tags:
941141c2c475 ci: add a runner for macos
Matt Harbison <matt_harbison@yahoo.com>
parents: 52002
diff changeset
   590
      - macos
52207
50fa42a2a79a ci: use the macos wheel to run tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52206
diff changeset
   591
    variables:
50fa42a2a79a ci: use the macos wheel to run tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52206
diff changeset
   592
        WHEEL_TYPE: "c"
50fa42a2a79a ci: use the macos wheel to run tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52206
diff changeset
   593
    needs:
50fa42a2a79a ci: use the macos wheel to run tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52206
diff changeset
   594
      - build-c-wheel-macos
52206
97d86d5b16f8 wheel: build mac os wheel through the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52203
diff changeset
   595
52231
d0e728b0db0e wheel: assign CIBW_SKIP globally
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52229
diff changeset
   596
# We could use CIBW_BUILD="cp310-*" to only build the Python 3.10 wheel for now as
d0e728b0db0e wheel: assign CIBW_SKIP globally
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52229
diff changeset
   597
# this is the only one we need to test. However testing that build work on all
d0e728b0db0e wheel: assign CIBW_SKIP globally
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52229
diff changeset
   598
# version is useful and match what we do with Linux.
52206
97d86d5b16f8 wheel: build mac os wheel through the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52203
diff changeset
   599
#
52231
d0e728b0db0e wheel: assign CIBW_SKIP globally
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52229
diff changeset
   600
# CIBW_SKIP is set globally at the start of the file. See comment there.
52206
97d86d5b16f8 wheel: build mac os wheel through the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52203
diff changeset
   601
#
97d86d5b16f8 wheel: build mac os wheel through the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52203
diff changeset
   602
# The weird directory structure match the one we use for Linux to deal with the
97d86d5b16f8 wheel: build mac os wheel through the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52203
diff changeset
   603
# multiple jobs. (all this might be unnecessary)
97d86d5b16f8 wheel: build mac os wheel through the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52203
diff changeset
   604
build-c-wheel-macos:
52258
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   605
    rules:
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   606
    - if: $CI_COMMIT_BRANCH =~ $RE_BRANCH
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   607
      needs:
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   608
        - trigger-nightly-build
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   609
    - if: $CI_COMMIT_BRANCH =~ $RE_TOPIC
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   610
      when: manual  # avoid overloading the CI by default
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   611
      allow_failure: true
52206
97d86d5b16f8 wheel: build mac os wheel through the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52203
diff changeset
   612
    stage: build
97d86d5b16f8 wheel: build mac os wheel through the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52203
diff changeset
   613
    tags:
97d86d5b16f8 wheel: build mac os wheel through the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52203
diff changeset
   614
      - macos
52219
4496f059cf5c wheel: enforce that translation being build for macos wheel
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52216
diff changeset
   615
    variables:
4496f059cf5c wheel: enforce that translation being build for macos wheel
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52216
diff changeset
   616
      MERCURIAL_SETUP_FORCE_TRANSLATIONS: "1"
52206
97d86d5b16f8 wheel: build mac os wheel through the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52203
diff changeset
   617
    script:
52241
05addf266f6f wheel: add a platform level to the wheel directories
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52237
diff changeset
   618
      - PLATFORM=`$PYTHON -c 'import sys; print(sys.platform)'`
52206
97d86d5b16f8 wheel: build mac os wheel through the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52203
diff changeset
   619
      - rm -rf tmp-wheels
52231
d0e728b0db0e wheel: assign CIBW_SKIP globally
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52229
diff changeset
   620
      - cibuildwheel --output-dir tmp-wheels/
52206
97d86d5b16f8 wheel: build mac os wheel through the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52203
diff changeset
   621
      - for py_version in cp38-cp38 cp39-cp39 cp310-cp310 cp311-cp311 cp312-cp312 cp313-cp313; do
52241
05addf266f6f wheel: add a platform level to the wheel directories
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52237
diff changeset
   622
          mkdir -p wheels/$PLATFORM/c/$py_version/;
05addf266f6f wheel: add a platform level to the wheel directories
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52237
diff changeset
   623
          mv tmp-wheels/*$py_version*.whl wheels/$PLATFORM/c/$py_version/;
52206
97d86d5b16f8 wheel: build mac os wheel through the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52203
diff changeset
   624
        done
97d86d5b16f8 wheel: build mac os wheel through the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52203
diff changeset
   625
      - rm -rf tmp-wheels
97d86d5b16f8 wheel: build mac os wheel through the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52203
diff changeset
   626
    artifacts:
97d86d5b16f8 wheel: build mac os wheel through the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52203
diff changeset
   627
      paths:
97d86d5b16f8 wheel: build mac os wheel through the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52203
diff changeset
   628
        - wheels
97d86d5b16f8 wheel: build mac os wheel through the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52203
diff changeset
   629
      expire_in: 1 week
52242
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   630
52257
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   631
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   632
.nightly_build_step:
52242
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   633
  extends: .all
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   634
  stage: upload
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   635
  rules:
52256
ff1d4b2df8bd ci: abstract the branch matching regexp
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52250
diff changeset
   636
    - if: '$CI_COMMIT_BRANCH =~ $RE_BRANCH'
52242
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   637
      # note that at the time of writing this, this job depends on multiple
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   638
      # manual one. So it will not run by default, but will automatically run
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   639
      # if the manual jobs are triggered.
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   640
      #
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   641
      # Also beware that "on_success" will ignore failure of manual test we
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   642
      # directly depends on. This currently relevant for the "test-3.x-c"
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   643
      # tests.
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   644
      when: on_success
52256
ff1d4b2df8bd ci: abstract the branch matching regexp
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52250
diff changeset
   645
    - if: '$CI_COMMIT_BRANCH =~ $RE_TOPIC'
52242
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   646
      when: never
52257
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   647
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   648
# a dummy job that gather greatly parallel object into one.
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   649
#
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   650
# It exists because gitlab-ci has a "50 jobs" limit on "needs" entries.
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   651
# (yes, this is sad)
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   652
#
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   653
.sink:
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   654
  extends:
52258
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   655
    - .nightly_build_step
52257
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   656
    - .dummy
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   657
52258
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   658
test-result-linux:
52257
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   659
  extends: .sink
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   660
  needs:
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   661
    - test-c
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   662
    - test-3.8-c
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   663
    - test-3.12-c
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   664
    - test-3.13-c
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   665
52258
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   666
test-result-macos:
52257
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   667
  extends: .sink
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   668
  needs:
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   669
    - macos
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   670
52258
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   671
test-result-windows:
52257
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   672
  extends: .sink
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   673
  needs:
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   674
    - windows
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   675
52276
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   676
wheel-result-linux:
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   677
  extends: .sink
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   678
  needs:
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   679
    - build-c-wheel
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   680
    - build-c-wheel-musl
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   681
    - build-c-wheel-i686
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   682
    - build-c-wheel-i686-musl
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   683
    - build-c-wheel-arm64
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   684
    - build-c-wheel-arm64-musl
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   685
  artifacts:
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   686
      paths:
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   687
        - wheels
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   688
      expire_in: 1 week
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   689
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   690
wheel-result-windows:
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   691
  extends: .sink
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   692
  needs:
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   693
    - build-c-wheel-windows
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   694
  artifacts:
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   695
      paths:
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   696
        - wheels
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   697
      expire_in: 1 week
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   698
52257
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   699
# Upload nightly build wheel on the heptapod registry on test success
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   700
#
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   701
# At the time this task is added, since the mac wheels are built on shell
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   702
# runner, those nightly are not be considered fully secured.
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   703
#
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   704
# In addition, since any job can upload package, pretty much anyone with CI
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   705
# access can upload anything pretending to be any version. To fix it we would
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   706
# have to prevent the CI token to upload to the registry and have dedicated
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   707
# credential accessible only from protected branches.
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   708
upload-wheel-nightly:
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   709
  extends: .nightly_build_step
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   710
  image: "registry.heptapod.net/mercurial/ci-images/twine:v3.0"
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   711
  # because we don't want to upload only half of a wheel
3f7c7a855af0 ci: add "sink" for parallel tests
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52256
diff changeset
   712
  interruptible: false
52242
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   713
  needs:
52276
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   714
    - wheel-result-linux
13be751218e0 ci: add sink for wheels too
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52275
diff changeset
   715
    - wheel-result-windows
52275
843c250fb2de wheel: also build wheel for linux arm64 in the CI
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52267
diff changeset
   716
    - build-c-wheel-macos
52258
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   717
    - test-result-linux
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   718
    - test-result-macos
b65f11f49375 ci: for branches, use a single trigger
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52257
diff changeset
   719
    - test-result-windows
52242
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   720
  # It would be nice to be able to restrict that a bit to protected branch only
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   721
  variables:
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   722
    TWINE_USERNAME: gitlab-ci-token
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   723
    TWINE_PASSWORD: $CI_JOB_TOKEN
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   724
  script:
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   725
    - twine
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   726
      upload
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   727
      --verbose
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   728
      --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   729
      wheels/*/*/*/*.whl
b8efa9013d3f wheel: add a job uploading nightly build
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 52241
diff changeset
   730
      wheels/*/*.whl