mirror of
https://github.com/nlohmann/json.git
synced 2026-10-28 00:35:43 +00:00
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>
31 lines
1.8 KiB
Markdown
31 lines
1.8 KiB
Markdown
# ci_jobs
|
|
|
|
The jobs of the compiler workflows [`ubuntu.yml`](../../.github/workflows/ubuntu.yml),
|
|
[`macos.yml`](../../.github/workflows/macos.yml), and [`windows.yml`](../../.github/workflows/windows.yml) are split into
|
|
three sets, chosen by each job's
|
|
`if:` condition (see [How CI runs](https://json.nlohmann.me/community/quality_assurance/#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`](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`](../../docs/mkdocs/docs/community/quality_assurance.md) is up to date.
|
|
|
|
```shell
|
|
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.
|