Files
json/tools/ci_jobs/README.md
T
Niels Lohmann 4c3e92b96e Split the macOS and Windows jobs into a PR set, a full set, and a nightly set
The 19 macOS and 32 Windows jobs ran on every push to every pull request.
They now use the same sets as the Ubuntu jobs:

- PR set (16): four Visual Studio 2022 and two Visual Studio 2026
  configurations, ARM64 Debug, Clang 20.1.8 with MinGW, MinGW x86, the
  C++20 module test, Xcode 16.0, 16.4, 26.3 and 26.6, C++14 on the
  latest Xcode, and the Swift Package Manager check.
- full set (34): every other Visual Studio configuration, Clang
  version, clang-cl, Xcode version and C++ standard.
- nightly set (1): 64-bit MinGW, which takes about 68 minutes. A failed
  nightly run opens or updates an issue.

No configuration is removed: tools/ci_jobs/ci_jobs.py --compare lists
157 configurations before and after, and all jobs keep their runner,
steps and environment. ci_jobs.py now checks all three workflows and
expands matrices that consist only of include entries correctly.

Signed-off-by: Niels Lohmann <mail@nlohmann.me>
2026-10-27 19:45:39 +01:00

1.8 KiB

ci_jobs

The jobs of the compiler workflows ubuntu.yml, macos.yml, and windows.yml are split into three sets, chosen by each job's if: condition (see How CI runs):

  • PR set: every push to a pull request, and every push to develop, master, and release/*;
  • full set: after the PR set passed, on pull requests with the label "🚀 ready to merge" and on every push;
  • nightly set: every night on develop, on every push to master and release/*, and when started by hand.

A matrix whose entries belong to different sets is split into one job per set: the full-set job gets the suffix _full, the nightly-set job _nightly, and both share their steps with the PR-set job through YAML anchors.

ci_jobs.py checks that

  • every job has the if: condition of exactly one set (the conditions are in SETS),
  • every full-set job waits for (needs:) exactly the PR set of its workflow, and nightly_report for exactly the nightly set, and
  • the job table in quality_assurance.md is up to date.
python3 -m venv venv && venv/bin/pip install -r tools/ci_jobs/requirements.txt
venv/bin/python tools/ci_jobs/ci_jobs.py                       # check
venv/bin/python tools/ci_jobs/ci_jobs.py --markdown            # print the job table for the documentation
venv/bin/python tools/ci_jobs/ci_jobs.py --compare origin/develop  # list configurations added or removed since develop

Use --compare when changing the workflows: a configuration that disappears fails it, so no compiler, version, or standard is dropped by accident when jobs are split, merged, or moved between sets.