diff --git a/.github/workflows/ci_tests.yml b/.github/workflows/ci_tests.yml index 4ae60bf0..83659fbf 100644 --- a/.github/workflows/ci_tests.yml +++ b/.github/workflows/ci_tests.yml @@ -8,133 +8,19 @@ on: - main pull_request: workflow_dispatch: - schedule: - - cron: '30 15 * * *' jobs: - beman-submodule-check: - uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-submodule-check.yml@1.1.0 - preset-test: - uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-preset-test.yml@1.1.0 + uses: ./.github/workflows/reusable-beman-preset-test.yml with: matrix_config: > [ - {"preset": "gcc-debug", "image": "ghcr.io/bemanproject/infra-containers-gcc:latest"}, - {"preset": "gcc-release", "image": "ghcr.io/bemanproject/infra-containers-gcc:latest"}, - {"preset": "llvm-debug", "image": "ghcr.io/bemanproject/infra-containers-clang:latest"}, - {"preset": "llvm-release", "image": "ghcr.io/bemanproject/infra-containers-clang:latest"}, - {"preset": "appleclang-debug", "runner": "macos-latest"}, - {"preset": "appleclang-release", "runner": "macos-latest"}, - {"preset": "msvc-debug", "runner": "windows-latest"}, - {"preset": "msvc-release", "runner": "windows-latest"} + {"preset": "gcc-debug", "platform": "ubuntu-latest"}, + {"preset": "gcc-release", "platform": "ubuntu-latest"}, + {"preset": "llvm-debug", "platform": "ubuntu-latest"}, + {"preset": "llvm-release", "platform": "ubuntu-latest"}, + {"preset": "appleclang-debug", "platform": "ubuntu-latest"}, + {"preset": "appleclang-release", "platform": "ubuntu-latest"}, + {"preset": "msvc-debug", "platform": "windows-latest"}, + {"preset": "msvc-release", "platform": "windows-latest"} ] - - build-and-test: - uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-build-and-test.yml@1.1.0 - with: - matrix_config: > - { - "gcc": [ - { "versions": ["15"], - "tests": [ - { "cxxversions": ["c++26"], - "tests": [ - { "stdlibs": ["libstdc++"], - "tests": [ - "Debug.Default", "Release.Default", "Release.TSan", - "Release.MaxSan", "Debug.Werror", "Debug.Dynamic", - "Debug.Coverage" - ] - } - ] - }, - { "cxxversions": ["c++23", "c++20", "c++17"], - "tests": [{ "stdlibs": ["libstdc++"], "tests": ["Release.Default"]}] - } - ] - }, - { "versions": ["14", "13"], - "tests": [ - { "cxxversions": ["c++26", "c++23", "c++20", "c++17"], - "tests": [{ "stdlibs": ["libstdc++"], "tests": ["Release.Default"]}] - } - ] - }, - { - "versions": ["12", "11"], - "tests": [ - { "cxxversions": ["c++23", "c++20", "c++17"], - "tests": [{ "stdlibs": ["libstdc++"], "tests": ["Release.Default"]}] - } - ] - } - ], - "clang": [ - { "versions": ["21"], - "tests": [ - {"cxxversions": ["c++26"], - "tests": [ - { "stdlibs": ["libstdc++", "libc++"], - "tests": [ - "Debug.Default", "Release.Default", "Release.TSan", - "Release.MaxSan", "Debug.Werror", "Debug.Dynamic" - ] - } - ] - }, - { "cxxversions": ["c++23", "c++20", "c++17"], - "tests": [ - {"stdlibs": ["libstdc++", "libc++"], "tests": ["Release.Default"]} - ] - } - ] - }, - { "versions": ["20", "19", "18"], - "tests": [ - { "cxxversions": ["c++26", "c++23", "c++20", "c++17"], - "tests": [ - {"stdlibs": ["libstdc++", "libc++"], "tests": ["Release.Default"]} - ] - } - ] - }, - { "versions": ["17"], - "tests": [ - { "cxxversions": ["c++26", "c++23", "c++20", "c++17"], - "tests": [{"stdlibs": ["libc++"], "tests": ["Release.Default"]}] - }, - { "cxxversions": ["c++20", "c++17"], - "tests": [{"stdlibs": ["libstdc++"], "tests": ["Release.Default"]}] - } - ] - } - ], - "appleclang": [ - { "versions": ["latest"], - "tests": [ - { "cxxversions": ["c++26", "c++23", "c++20", "c++17"], - "tests": [{ "stdlibs": ["libc++"], "tests": ["Release.Default"]}] - } - ] - } - ], - "msvc": [ - { "versions": ["latest"], - "tests": [ - { "cxxversions": ["c++23"], - "tests": [ - { "stdlibs": ["stl"], - "tests": ["Debug.Default", "Release.Default", "Release.MaxSan"] - } - ] - } - ] - } - ] - } - - create-issue-when-fault: - needs: [preset-test, build-and-test] - if: failure() && github.event_name == 'schedule' - uses: bemanproject/infra-workflows/.github/workflows/reusable-beman-create-issue-when-fault.yml@1.1.0 diff --git a/.github/workflows/reusable-beman-preset-test.yml b/.github/workflows/reusable-beman-preset-test.yml new file mode 100644 index 00000000..49b39655 --- /dev/null +++ b/.github/workflows/reusable-beman-preset-test.yml @@ -0,0 +1,34 @@ +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +name: 'Beman preset test matrix' +on: + workflow_call: + inputs: + matrix_config: + description: 'JSON array of {preset:"", runner:""} or {preset:"", image:""} objects' + type: string + required: true +jobs: + preset_test_matrix: + strategy: + fail-fast: false + matrix: + presets: ${{ fromJSON(inputs.matrix_config) }} + name: "Preset: ${{ matrix.presets.preset }} on ${{ matrix.presets.runner || 'ubuntu-latest' }}" + runs-on: ${{ matrix.presets.runner || 'ubuntu-latest' }} + container: ${{ matrix.presets.image }} + steps: + - uses: actions/checkout@v4 + - name: Setup build environment + if: matrix.presets.runner + uses: lukka/get-cmake@latest + with: + cmakeVersion: "4.0.3" + ninjaVersion: "1.13.0" + - name: Setup MSVC + if: startsWith(matrix.presets.runner, 'windows') + uses: TheMrMilchmann/setup-msvc-dev@v3 + with: + arch: x64 + - name: Run preset + run: cmake --workflow --preset ${{ matrix.presets.preset }}