diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7abeb6c4..604d6254 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,81 +12,38 @@ on: jobs: build: name: ${{ matrix.config.name }} - runs-on: ${{ matrix.config.os }} + runs-on: ubuntu-24.04 + container: + image: ghcr.io/bemanproject/testingcontainers-${{ matrix.config.tag }} strategy: fail-fast: false matrix: config: - - {name: "Ubuntu Clang 21", os: ubuntu-24.04, toolchain: "clang-21", clang_version: 21, installed_clang_version: 17, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} - - {name: "Ubuntu Clang 20", os: ubuntu-24.04, toolchain: "clang-20", clang_version: 20, installed_clang_version: 17, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu Clang 21", tag: "clang:21", toolchain: "clang-21", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu Clang 20", tag: "clang:20", toolchain: "clang-20", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} # Note: clang-19 + Asan setup causes errors on some platforms. Temporary skip some checks via .asan_options. - - {name: "Ubuntu Clang 19", os: ubuntu-24.04, toolchain: "clang-19", clang_version: 19, installed_clang_version: 17, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" ", asan_options: "new_delete_type_mismatch=0"} - - {name: "Ubuntu Clang 18", os: ubuntu-24.04, toolchain: "clang-18", clang_version: 18, installed_clang_version: 17, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} - - {name: "Ubuntu Clang 17", os: ubuntu-24.04, toolchain: "clang-17", clang_version: 17, installed_clang_version: 17, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} - - {name: "Ubuntu GCC 14", os: ubuntu-24.04, toolchain: "gcc-14", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan;Gcov\" ", coverage: true} - - {name: "Ubuntu GCC 13", os: ubuntu-24.04, toolchain: "gcc-13", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} - - {name: "Ubuntu GCC 12", os: ubuntu-24.04, toolchain: "gcc-12", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu Clang 19", tag: "clang:19", toolchain: "clang-19", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" ", asan_options: "new_delete_type_mismatch=0"} + - {name: "Ubuntu Clang 18", tag: "clang:18", toolchain: "clang-18", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu Clang 17", tag: "clang:17", toolchain: "clang-17", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu GCC 14", tag: "gcc:14", toolchain: "gcc-14", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan;Gcov\" ", coverage: true} + - {name: "Ubuntu GCC 13", tag: "gcc:13", toolchain: "gcc-13", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu GCC 12", tag: "gcc:12", toolchain: "gcc-12", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} steps: - uses: actions/checkout@v3 with: submodules: 'true' - - uses: seanmiddleditch/gha-setup-ninja@master - - name: Activate verbose shell - run: set -x - - name: Install LLVM+Clang - if: startsWith(matrix.config.name, 'Ubuntu Clang') + # If Clang 17, install a newer version of libc++ and libc++abi. + - name: Install libc++ + if: matrix.config.tag == 'clang:17' run: | set -x - cat /etc/lsb-release - # Remove existing Clang installations. - sudo apt-get remove \ - clang-${{matrix.config.installed_clang_version}} \ - clang++-${{matrix.config.installed_clang_version}} \ - clangd-${{matrix.config.installed_clang_version}} \ - clang-tidy-${{matrix.config.installed_clang_version}} \ - clang-format-${{matrix.config.installed_clang_version}} \ - clang-tools-${{matrix.config.installed_clang_version}} \ - llvm-${{matrix.config.installed_clang_version}}-dev \ - lld-${{matrix.config.installed_clang_version}} \ - lldb-${{matrix.config.installed_clang_version}} \ - llvm-${{matrix.config.installed_clang_version}}-tools \ - libc++-${{matrix.config.installed_clang_version}}-dev \ - libc++abi-${{matrix.config.installed_clang_version}}-dev \ - libclang-common-${{matrix.config.installed_clang_version}}-dev \ - libclang-${{matrix.config.installed_clang_version}}-dev \ - libclang-cpp${{matrix.config.installed_clang_version}}-dev \ - libomp-${{matrix.config.installed_clang_version}}-dev \ - libunwind-${{matrix.config.installed_clang_version}}-dev \ - libc++-dev libc++1 libc++abi-dev libc++abi1 - # Install LLVM+Clang. - CLANG_VERSION=$(echo ${{matrix.config.toolchain}} | cut -d '-' -f2) - wget https://apt.llvm.org/llvm.sh - chmod +x llvm.sh - sudo ./llvm.sh ${CLANG_VERSION} all - # Link Clang libraries (if not done by llvm.sh - some links are already set). - sudo ln -fs /usr/lib/llvm-${CLANG_VERSION}/lib/lib* /usr/lib/x86_64-linux-gnu/ || true - # If Clang 17, install a newer version of libc++ and libc++abi. - [[ ${CLANG_VERSION} = 17 ]] && sudo apt-get install libc++-dev libc++1 libc++abi-dev libc++abi1 + sudo apt-get install -y libc++-dev libc++1 libc++abi-dev libc++abi1 find /usr/lib/x86_64-linux-gnu/ -name libc++.so* || true - clang++-${CLANG_VERSION} --version - - name: Install GCC - if: startsWith(matrix.config.name, 'Ubuntu GCC') - run: | - set -x - # Remove existing GCC installations. - sudo apt-get remove gcc-13 g++-13 gcc-14 g++-14 gcc g++ - sudo apt update - # Install GCC. - GCC_VERSION=$(echo ${{matrix.config.toolchain}} | cut -d '-' -f2) - echo "GCC_VERSION=$GCC_VERSION" - sudo apt-get install g++-${GCC_VERSION} gcc-${GCC_VERSION} - find /usr/lib/x86_64-linux-gnu/ -name libstdc++.so* - g++-${GCC_VERSION} --version - name: Install Gcovr if: matrix.config.coverage run: | set -x - sudo apt-get install gcovr + sudo apt-get install -y gcovr - name: CMake Configure run: | set -x @@ -142,7 +99,7 @@ jobs: if: matrix.config.coverage uses: coverallsapp/github-action@main with: - file: ${{runner.workspace}}/optional/.build/coverage.json + file: .build/coverage.json github-token: ${{ secrets.GITHUB_TOKEN }} create-issue-when-fault: