👷 Update CI Pipeline #12
Workflow file for this run
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: Compiler Compatibility CI | |
| on: | |
| push: | |
| branches: [master] | |
| pull_request: | |
| jobs: | |
| build: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| compiler: | |
| - { tag: "ubuntu-2404_clang-16", name: "Ubuntu 24.04 Clang 16", cxx: "/usr/bin/clang++-16", cc: "/usr/bin/clang-16", runs-on: "ubuntu-24.04" } | |
| - { tag: "ubuntu-2404_clang-17", name: "Ubuntu 24.04 Clang 17", cxx: "/usr/bin/clang++-17", cc: "/usr/bin/clang-17", runs-on: "ubuntu-24.04" } | |
| - { tag: "ubuntu-2404_clang-18", name: "Ubuntu 24.04 Clang 18", cxx: "/usr/bin/clang++-18", cc: "/usr/bin/clang-18", runs-on: "ubuntu-24.04" } | |
| - { tag: "ubuntu-2404_gcc-12", name: "Ubuntu 24.04 G++ 12", cxx: "/usr/bin/g++-12", cc: "/usr/bin/gcc-12", runs-on: "ubuntu-24.04" } | |
| - { tag: "ubuntu-2404_gcc-13", name: "Ubuntu 24.04 G++ 13", cxx: "/usr/bin/g++-13", cc: "/usr/bin/gcc-13", runs-on: "ubuntu-24.04" } | |
| - { tag: "ubuntu-2404_gcc-14", name: "Ubuntu 24.04 G++ 14", cxx: "/usr/bin/g++-14", cc: "/usr/bin/gcc-14", runs-on: "ubuntu-24.04" } | |
| - { tag: "ubuntu-2204_clang-13", name: "Ubuntu 22.04 Clang 13", cxx: "/usr/bin/clang++-13", cc: "/usr/bin/clang-13", runs-on: "ubuntu-22.04" } | |
| - { tag: "ubuntu-2204_clang-14", name: "Ubuntu 22.04 Clang 14", cxx: "/usr/bin/clang++-14", cc: "/usr/bin/clang-14", runs-on: "ubuntu-22.04" } | |
| - { tag: "ubuntu-2204_clang-15", name: "Ubuntu 22.04 Clang 15", cxx: "/usr/bin/clang++-15", cc: "/usr/bin/clang-15", runs-on: "ubuntu-22.04" } | |
| - { tag: "ubuntu-2204_gcc-10", name: "Ubuntu 22.04 G++ 10", cxx: "/usr/bin/g++-10", cc: "/usr/bin/gcc-10", runs-on: "ubuntu-22.04" } | |
| - { tag: "ubuntu-2204_gcc-11", name: "Ubuntu 22.04 G++ 11", cxx: "/usr/bin/g++-11", cc: "/usr/bin/gcc-11", runs-on: "ubuntu-22.04" } | |
| runs-on: ${{ matrix.compiler.runs-on }} | |
| name: Compiler ${{ matrix.compiler.name }} | |
| env: | |
| CXX: ${{ matrix.compiler.cxx }} | |
| CC: ${{ matrix.compiler.cc }} | |
| outputs: | |
| # Because github wants us to suffer we need to list out every output instead of using a matrix statement or some kind of dynamic setting | |
| ubuntu-2404_clang-16: ${{ steps.status.outputs.ubuntu-2404_clang-16 }} | |
| ubuntu-2404_clang-17: ${{ steps.status.outputs.ubuntu-2404_clang-17 }} | |
| ubuntu-2404_clang-18: ${{ steps.status.outputs.ubuntu-2404_clang-18 }} | |
| ubuntu-2404_gcc-12: ${{ steps.status.outputs.ubuntu-2404_gcc-12 }} | |
| ubuntu-2404_gcc-13: ${{ steps.status.outputs.ubuntu-2404_gcc-13 }} | |
| ubuntu-2404_gcc-14: ${{ steps.status.outputs.ubuntu-2404_gcc-14 }} | |
| ubuntu-2204_clang-13: ${{ steps.status.outputs.ubuntu-2204_clang-13 }} | |
| ubuntu-2204_clang-14: ${{ steps.status.outputs.ubuntu-2204_clang-14 }} | |
| ubuntu-2204_clang-15: ${{ steps.status.outputs.ubuntu-2204_clang-15 }} | |
| ubuntu-2204_gcc-10: ${{ steps.status.outputs.ubuntu-2204_gcc-10 }} | |
| ubuntu-2204_gcc-11: ${{ steps.status.outputs.ubuntu-2204_gcc-11 }} | |
| defaults: | |
| run: | |
| shell: bash -l {0} | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v3 | |
| # Ubuntu 22.04 container has libstdc++13 installed which is incompatible with clang < 15 in C++20 | |
| - name: Uninstall libstdc++-13-dev | |
| if: (matrix.compiler.tag == 'ubuntu-2204_clang-14') || (matrix.compiler.tag == 'ubuntu-2204_clang-13') | |
| run: | | |
| sudo apt autoremove libstdc++-13-dev gcc-13 libgcc-13-dev | |
| sudo apt install -y --no-install-recommends libstdc++-12-dev gcc-12 libgcc-12-dev | |
| - name: Install dependencies | |
| run: sudo apt install -y --no-install-recommends liburing-dev | |
| - name: Install gtest | |
| uses: ./.github/actions/install/gtest | |
| - name: Configure | |
| run: cmake -S. -Bbuild -DASYNCPP_BUILD_TEST=ON -DASYNCPP_WITH_ASAN=ON -DASYNCPP_WITH_TSAN=OFF | |
| - name: Build | |
| run: cmake --build build --config Debug | |
| - name: Test | |
| run: ctest --test-dir build --output-on-failure --no-tests=error | |
| - name: Update Result | |
| id: status | |
| if: ${{ always() }} | |
| run: echo "${{ matrix.compiler.tag }}=${{ job.status }}" >> $GITHUB_OUTPUT | |
| badge-upload: | |
| if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' && always() }} | |
| needs: [build] | |
| runs-on: ubuntu-24.04 | |
| name: Publish badges | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v3 | |
| - name: Publish Badges | |
| uses: ./.github/actions/badge | |
| with: | |
| category: compiler | |
| badges: ${{ toJson(needs.build.outputs) }} |