mirror of
https://github.com/nlohmann/json.git
synced 2026-10-28 08:45: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>
186 lines
6.5 KiB
YAML
186 lines
6.5 KiB
YAML
name: macOS
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- develop
|
|
- master
|
|
- release/*
|
|
pull_request:
|
|
# labeled: the "🚀 ready to merge" label starts the full set (see below)
|
|
types: [opened, synchronize, reopened, labeled]
|
|
# Skip pull requests that change only files no job here reads. The list is checked by
|
|
# tools/check_path_filters/check_path_filters.py (repository_checks.yml); change both together.
|
|
paths:
|
|
- '**'
|
|
- '!docs/**'
|
|
- '!**.md'
|
|
- '!.github/*'
|
|
- '!.github/ISSUE_TEMPLATE/**'
|
|
- '!.github/external_ci/**'
|
|
- '!.github/workflows/**'
|
|
- '!.reuse/**'
|
|
- '!LICENSES/**'
|
|
- '!CITATION.cff'
|
|
- '!REUSE.toml'
|
|
# read by tools/check_build_options in the ci_meson_install job (ubuntu.yml)
|
|
- 'docs/mkdocs/docs/integration/package_managers.md'
|
|
# built by the swiftpm job (macos.yml)
|
|
- 'docs/mkdocs/docs/integration/swift/**'
|
|
- '.github/workflows/macos.yml'
|
|
workflow_dispatch:
|
|
|
|
# A run triggered by any other label gets a group of its own, so it does not
|
|
# cancel the run of the last push; its jobs are skipped.
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event_name == 'schedule' && 'nightly' || github.ref || github.run_id }}${{ github.event.action == 'labeled' && github.event.label.name != '🚀 ready to merge' && format('-{0}', github.run_id) || '' }}
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
|
|
# The jobs are split into a PR set and a full set like in ubuntu.yml (see "How
|
|
# CI runs" in docs/mkdocs/docs/community/quality_assurance.md): the PR set runs
|
|
# on every push; the full set after the PR set passed, on pushes and on pull
|
|
# requests with the "🚀 ready to merge" label. tools/ci_jobs checks that every
|
|
# job belongs to exactly one set.
|
|
|
|
jobs:
|
|
###########################################################################
|
|
# PR set
|
|
###########################################################################
|
|
|
|
macos-15:
|
|
if: &pr_set ${{ github.event_name != 'schedule' && (github.event.action != 'labeled' || github.event.label.name == '🚀 ready to merge') }}
|
|
runs-on: macos-15 # https://github.com/actions/runner-images/blob/main/images/macos/macos-15-Readme.md
|
|
strategy:
|
|
matrix:
|
|
xcode: ['16.0', '16.4', '26.3']
|
|
env:
|
|
DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer
|
|
|
|
steps: &xcode_steps
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
persist-credentials: false
|
|
- name: Run CMake
|
|
run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On -DJSON_FastTests=ON
|
|
- name: Build
|
|
run: cmake --build build --parallel 10
|
|
- name: Test
|
|
run: cd build ; ctest -j 10 --output-on-failure
|
|
|
|
macos-26:
|
|
if: *pr_set
|
|
runs-on: macos-26 # https://github.com/actions/runner-images/blob/main/images/macos/macos-26-arm64-Readme.md
|
|
strategy:
|
|
matrix:
|
|
xcode: ['26.6']
|
|
env:
|
|
DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer
|
|
|
|
steps:
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
persist-credentials: false
|
|
- name: Run CMake
|
|
run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On -DJSON_FastTests=ON
|
|
- name: Build
|
|
run: cmake --build build --parallel 10
|
|
- name: Test
|
|
run: cd build ; ctest -j 10 --output-on-failure
|
|
|
|
xcode_standards:
|
|
if: *pr_set
|
|
runs-on: macos-latest
|
|
strategy:
|
|
matrix:
|
|
standard: [14]
|
|
|
|
steps: &xcode_standards_steps
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
persist-credentials: false
|
|
- name: Run CMake
|
|
run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Debug -DJSON_BuildTests=On -DJSON_TestStandards=${{ matrix.standard }}
|
|
- name: Build
|
|
run: cmake --build build --parallel 10
|
|
- name: Test
|
|
run: cd build ; ctest -j 10 --output-on-failure
|
|
|
|
swiftpm:
|
|
if: *pr_set
|
|
runs-on: macos-15
|
|
steps:
|
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
with:
|
|
persist-credentials: false
|
|
- name: Check that Package.swift resolves without a deprecation warning
|
|
run: swift package dump-package
|
|
- name: Build the SwiftPM documentation example against this checkout
|
|
run: |
|
|
mkdir -p /tmp/json-swiftpm-consumer/Sources/MyLibrary
|
|
cp docs/mkdocs/docs/integration/swift/example.cpp /tmp/json-swiftpm-consumer/Sources/MyLibrary/example.cpp
|
|
cat > /tmp/json-swiftpm-consumer/Package.swift << EOF
|
|
// swift-tools-version: 5.9
|
|
import PackageDescription
|
|
|
|
let package = Package(
|
|
name: "MyPackage",
|
|
dependencies: [
|
|
.package(path: "${{ github.workspace }}")
|
|
],
|
|
targets: [
|
|
.target(
|
|
name: "MyLibrary",
|
|
dependencies: [
|
|
.product(name: "json", package: "json")
|
|
],
|
|
publicHeadersPath: "."
|
|
)
|
|
]
|
|
)
|
|
EOF
|
|
cd /tmp/json-swiftpm-consumer
|
|
swift build
|
|
|
|
|
|
###########################################################################
|
|
# full set: starts after the PR set passed
|
|
###########################################################################
|
|
|
|
macos-15_full:
|
|
needs: &pr_set_jobs [macos-15, macos-26, xcode_standards, swiftpm]
|
|
if: &full_set ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' || contains(github.event.pull_request.labels.*.name, '🚀 ready to merge') }}
|
|
runs-on: macos-15 # https://github.com/actions/runner-images/blob/main/images/macos/macos-15-Readme.md
|
|
strategy:
|
|
matrix:
|
|
xcode: ['16.1', '16.2', '16.3', '26.0.1', '26.1.1', '26.2']
|
|
env:
|
|
DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer
|
|
|
|
steps: *xcode_steps
|
|
|
|
macos-26_full:
|
|
needs: *pr_set_jobs
|
|
if: *full_set
|
|
runs-on: macos-26 # https://github.com/actions/runner-images/blob/main/images/macos/macos-26-arm64-Readme.md
|
|
strategy:
|
|
matrix:
|
|
xcode: ['26.4.1', '26.5']
|
|
env:
|
|
DEVELOPER_DIR: /Applications/Xcode_${{ matrix.xcode }}.app/Contents/Developer
|
|
|
|
steps: *xcode_steps
|
|
|
|
xcode_standards_full:
|
|
needs: *pr_set_jobs
|
|
if: *full_set
|
|
runs-on: macos-latest
|
|
strategy:
|
|
matrix:
|
|
standard: [11, 17, 20, 23, 26]
|
|
|
|
steps: *xcode_standards_steps
|