build #2035
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: 'clang14' | |
| os-version: '22.04' | |
| c-compiler: 'clang-14' | |
| cxx-compiler: 'clang++-14' | |
| generator: '"Unix Makefiles" "-DCMAKE_CXX_FLAGS=-stdlib=libc++ -std=c++20"' | |
| relative_build_dir_path: '' | |
| - job-name: 'clang15' | |
| os-version: '22.04' | |
| c-compiler: 'clang-15' | |
| cxx-compiler: 'clang++-15' | |
| generator: '"Unix Makefiles"' | |
| relative_build_dir_path: '' | |
| - 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: 'gcc13' | |
| os-version: '24.04' | |
| c-compiler: 'gcc-13' | |
| cxx-compiler: 'g++-13' | |
| 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: 'gcc13 unity' | |
| os-version: '24.04' | |
| c-compiler: 'gcc-13' | |
| cxx-compiler: 'g++-13' | |
| generator: '"Unix Makefiles" -DCMAKE_UNITY_BUILD=yes' | |
| relative_build_dir_path: '' | |
| - job-name: 'gcc13 ninja in-source' | |
| os-version: '24.04' | |
| c-compiler: 'gcc-13' | |
| cxx-compiler: 'g++-13' | |
| generator: '"Ninja"' | |
| relative_build_dir_path: '' | |
| - job-name: 'gcc13 ninja out-of-source' | |
| os-version: '24.04' | |
| c-compiler: 'gcc-13' | |
| cxx-compiler: 'g++-13' | |
| generator: '"Ninja"' | |
| relative_build_dir_path: '../' | |
| - job-name: 'gcc13 ninja-unity' | |
| os-version: '24.04' | |
| c-compiler: 'gcc-13' | |
| cxx-compiler: 'g++-13' | |
| 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-15.4 | |
| os-version: 'latest' | |
| xcode-version: '15.4' | |
| generator: '"Unix Makefiles"' | |
| relative_build_dir_path: '' | |
| - job-name: 'xcode-15.4-ninja in-source' | |
| xcode-version: '15.4' | |
| os-version: 'latest' | |
| generator: '"Ninja"' | |
| relative_build_dir_path: '' | |
| - job-name: 'xcode-15.4-ninja out-of-source' | |
| xcode-version: '15.4' | |
| os-version: 'latest' | |
| generator: '"Ninja"' | |
| 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 | |
| DEVELOPER_DIR: '/Applications/Xcode_${{ matrix.xcode-version }}.app/Contents/Developer' | |
| steps: | |
| - uses: actions/checkout@master | |
| - uses: seanmiddleditch/gha-setup-ninja@v6 | |
| if: contains(matrix.generator, 'Ninja') | |
| - 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-2022 | |
| os-version: '2025' | |
| generator: '"Visual Studio 17 2022"' | |
| - job-name: WIN-2025-VS-2022 (clangcl) | |
| os-version: '2025' | |
| generator: '"Visual Studio 17 2022" -T "clangcl"' | |
| - job-name: WIN-latest-VS-2022 | |
| os-version: 'latest' | |
| generator: '"Visual Studio 17 2022"' | |
| - job-name: WIN-latest-VS-2022 (clangcl) | |
| os-version: 'latest' | |
| generator: '"Visual Studio 17 2022" -T "clangcl"' | |
| 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: 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 | |
| - 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}} |