. e update build matrix #2129
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: build | |
| on: | |
| push: | |
| pull_request: | |
| schedule: | |
| - cron: '16 0 * * 3,6' # <https://crontab.guru/#16_0_*_*_3,6> - "At 00:16 on Wednesday and Saturday." | |
| jobs: | |
| clang-format-and-update-docs: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@master | |
| - uses: DoozyX/clang-format-lint-action@v0.20 | |
| with: | |
| source: '.' | |
| exclude: './third_party' | |
| inplace: True | |
| clangFormatVersion: 9 | |
| - name: Run MarkdownSnippets | |
| run: | | |
| dotnet tool install --global MarkdownSnippets.Tool | |
| ./run_markdown_templates.sh | |
| shell: bash | |
| - uses: EndBug/add-and-commit@v9 | |
| with: | |
| author_name: Clang GitHub Action | |
| author_email: actions@github.com | |
| message: '. rd Reformat with clang-format and/or update snippets' | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| # Commented-out, as it keeps failing with http 429 error - too many requests | |
| # e.g. https://github.com/approvals/ApprovalTests.cpp/runs/541867195 | |
| # markdown-link-check: | |
| # runs-on: ubuntu-22.04 | |
| # steps: | |
| # - uses: actions/checkout@master | |
| # - uses: actions/setup-node@v1 | |
| # with: | |
| # node-version: '12.x' | |
| # - name: Install markdown-link-check | |
| # run: npm i -g markdown-link-check | |
| # - name: Run markdown-link-check on *.md files | |
| # run: ./scripts/check_links.sh | |
| Linux: | |
| needs: clang-format-and-update-docs | |
| # if: false # Disable this platform temporarily | |
| runs-on: ubuntu-${{ matrix.os-version }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - job-name: 'clang16' | |
| os-version: '24.04' | |
| c-compiler: 'clang-16' | |
| cxx-compiler: 'clang++-16' | |
| generator: '"Unix Makefiles"' | |
| relative_build_dir_path: '' | |
| - job-name: 'gcc12' | |
| os-version: '24.04' | |
| c-compiler: 'gcc-12' | |
| cxx-compiler: 'g++-12' | |
| generator: '"Unix Makefiles"' | |
| relative_build_dir_path: '' | |
| - job-name: 'clang18' | |
| os-version: '24.04' | |
| c-compiler: 'clang-18' | |
| cxx-compiler: 'clang++-18' | |
| generator: '"Unix Makefiles"' | |
| relative_build_dir_path: '' | |
| - job-name: 'gcc14' | |
| os-version: '24.04' | |
| c-compiler: 'gcc-14' | |
| cxx-compiler: 'g++-14' | |
| generator: '"Unix Makefiles"' | |
| relative_build_dir_path: '' | |
| - job-name: 'gcc14 unity' | |
| os-version: '24.04' | |
| c-compiler: 'gcc-14' | |
| cxx-compiler: 'g++-14' | |
| generator: '"Unix Makefiles" -DCMAKE_UNITY_BUILD=yes' | |
| relative_build_dir_path: '' | |
| - job-name: 'gcc14 ninja in-source' | |
| os-version: '24.04' | |
| c-compiler: 'gcc-14' | |
| cxx-compiler: 'g++-14' | |
| generator: '"Ninja"' | |
| relative_build_dir_path: '' | |
| - job-name: 'gcc14 ninja out-of-source' | |
| os-version: '24.04' | |
| c-compiler: 'gcc-14' | |
| cxx-compiler: 'g++-14' | |
| generator: '"Ninja"' | |
| relative_build_dir_path: '../' | |
| - job-name: 'gcc14 ninja-unity' | |
| os-version: '24.04' | |
| c-compiler: 'gcc-14' | |
| cxx-compiler: 'g++-14' | |
| generator: '"Ninja" -DCMAKE_UNITY_BUILD=yes' | |
| relative_build_dir_path: '' | |
| name: Linux ${{ matrix.job-name }} | |
| env: | |
| BUILD_PATH: ${{ github.workspace }}/${{ matrix.relative_build_dir_path }}build_space | |
| CC: ${{ matrix.c-compiler }} | |
| CXX: ${{ matrix.cxx-compiler }} | |
| steps: | |
| - uses: actions/checkout@master | |
| - uses: seanmiddleditch/gha-setup-ninja@v6 | |
| if: contains(matrix.generator, 'Ninja') | |
| - name: install boost | |
| run: | | |
| sudo apt-get update -qq | |
| sudo apt-get install -y libboost-all-dev | |
| - uses: ./.github/actions/build-and-test | |
| macOS: | |
| needs: clang-format-and-update-docs | |
| # if: false # Disable this platform temporarily | |
| runs-on: macos-${{ matrix.os-version }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - job-name: xcode-26.6 | |
| os-version: 'latest' | |
| xcode-version: '26.6' | |
| generator: '"Unix Makefiles"' | |
| relative_build_dir_path: '' | |
| name: macOS ${{ matrix.job-name }} | |
| env: | |
| BUILD_PATH: ${{ github.workspace }}/${{ matrix.relative_build_dir_path }}build_space | |
| HOMEBREW_NO_ANALYTICS: 1 | |
| HOMEBREW_NO_AUTO_UPDATE: 1 | |
| HOMEBREW_NO_INSTALL_CLEANUP: 1 | |
| steps: | |
| - uses: actions/checkout@master | |
| - uses: maxim-lobanov/setup-xcode@v1 | |
| with: | |
| xcode-version: ${{ matrix.xcode-version }} | |
| - name: install boost | |
| run: | | |
| brew install boost | |
| - uses: ./.github/actions/build-and-test | |
| Windows: | |
| needs: clang-format-and-update-docs | |
| # if: false # Disable this platform temporarily | |
| runs-on: windows-${{ matrix.os-version }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - job-name: WIN-2025-VS-2026 | |
| os-version: '2025' | |
| generator: '"Visual Studio 18 2026"' | |
| - job-name: WIN-2025-VS-2026 (clangcl) | |
| os-version: '2025' | |
| generator: '"Visual Studio 18 2026" -T "clangcl"' | |
| - job-name: WIN-2022-VS-2022 | |
| os-version: '2022' | |
| generator: '"Visual Studio 17 2022"' | |
| name: Windows ${{ matrix.job-name }} | |
| env: | |
| BUILD_PATH: ${{ github.workspace }}/build_space | |
| steps: | |
| - uses: actions/checkout@master | |
| - name: set up python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - uses: ./.github/actions/setup-conan | |
| - name: configure Conan for Visual Studio 2022 | |
| run: | | |
| conan profile remove settings.compiler.libcxx default | |
| conan profile update settings.compiler="Visual Studio" default | |
| conan profile update settings.compiler.version=17 default | |
| conan profile update settings.compiler.runtime=MD default | |
| conan profile show default | |
| - name: install boost | |
| run: | | |
| ${boostroot} = "${env:GITHUB_WORKSPACE}\boost_install" | |
| conan install boost/1.72.0@ -o boost:header_only=True -g deploy --install-folder ${boostroot} | |
| echo "BOOST_ROOT=${boostroot}\boost" >> ${env:GITHUB_ENV} | |
| # DOS paths - with backslashes - are not compatible with the github bash | |
| # shell that is invoked in build-and-test/actions.yml - so sadly the code | |
| # in that file is pasted in here | |
| # - uses: ./.github/actions/build-and-test | |
| - name: configure | |
| run: | | |
| mkdir ${{ env.BUILD_PATH }} | |
| cd ${{ env.BUILD_PATH }} | |
| cmake --version | |
| cmake -G ${{ matrix.generator }} ${{ github.workspace }} -DCMAKE_BUILD_TYPE=Debug "-DCMAKE_POLICY_VERSION_MINIMUM=3.5" | |
| - name: build | |
| run: | | |
| cd ${{ env.BUILD_PATH }} | |
| cmake --build . --parallel 4 | |
| - name: test | |
| run: | | |
| cd ${{ env.BUILD_PATH }} | |
| ctest --verbose --output-on-failure -C Debug | |
| auto-merge: | |
| needs: [Linux, macOS, Windows] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out repo | |
| uses: actions/checkout@v4 | |
| - name: auto-merge | |
| if: | | |
| github.actor == 'dependabot[bot]' && | |
| github.event_name == 'pull_request' | |
| run: | | |
| gh pr merge --auto --rebase "$PR_URL" | |
| env: | |
| PR_URL: ${{github.event.pull_request.html_url}} | |
| # this secret needs to be in the settings.secrets.dependabot | |
| GITHUB_TOKEN: ${{secrets.GH_ACTION_TOKEN}} |