|
12 | 12 | jobs: |
13 | 13 | build: |
14 | 14 | name: ${{ matrix.config.name }} |
15 | | - runs-on: ${{ matrix.config.os }} |
| 15 | + runs-on: ubuntu-24.04 |
| 16 | + container: |
| 17 | + image: ghcr.io/bemanproject/testingcontainers-${{ matrix.config.tag }} |
16 | 18 | strategy: |
17 | 19 | fail-fast: false |
18 | 20 | matrix: |
19 | 21 | config: |
20 | | - - {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\" "} |
21 | | - - {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\" "} |
| 22 | + - {name: "Ubuntu Clang 21", tag: "clang:21", toolchain: "clang-21", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} |
| 23 | + - {name: "Ubuntu Clang 20", tag: "clang:20", toolchain: "clang-20", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} |
22 | 24 | # Note: clang-19 + Asan setup causes errors on some platforms. Temporary skip some checks via .asan_options. |
23 | | - - {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"} |
24 | | - - {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\" "} |
25 | | - - {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\" "} |
26 | | - - {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} |
27 | | - - {name: "Ubuntu GCC 13", os: ubuntu-24.04, toolchain: "gcc-13", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} |
28 | | - - {name: "Ubuntu GCC 12", os: ubuntu-24.04, toolchain: "gcc-12", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} |
| 25 | + - {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"} |
| 26 | + - {name: "Ubuntu Clang 18", tag: "clang:18", toolchain: "clang-18", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} |
| 27 | + - {name: "Ubuntu Clang 17", tag: "clang:17", toolchain: "clang-17", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} |
| 28 | + - {name: "Ubuntu GCC 14", tag: "gcc:14", toolchain: "gcc-14", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan;Gcov\" ", coverage: true} |
| 29 | + - {name: "Ubuntu GCC 13", tag: "gcc:13", toolchain: "gcc-13", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} |
| 30 | + - {name: "Ubuntu GCC 12", tag: "gcc:12", toolchain: "gcc-12", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} |
29 | 31 | steps: |
30 | 32 | - uses: actions/checkout@v3 |
31 | 33 | with: |
32 | 34 | submodules: 'true' |
33 | | - - uses: seanmiddleditch/gha-setup-ninja@master |
34 | | - - name: Activate verbose shell |
35 | | - run: set -x |
36 | | - - name: Install LLVM+Clang |
37 | | - if: startsWith(matrix.config.name, 'Ubuntu Clang') |
| 35 | + # If Clang 17, install a newer version of libc++ and libc++abi. |
| 36 | + - name: Install libc++ |
| 37 | + if: matrix.config.tag == 'clang:17' |
38 | 38 | run: | |
39 | 39 | set -x |
40 | | - cat /etc/lsb-release |
41 | | - # Remove existing Clang installations. |
42 | | - sudo apt-get remove \ |
43 | | - clang-${{matrix.config.installed_clang_version}} \ |
44 | | - clang++-${{matrix.config.installed_clang_version}} \ |
45 | | - clangd-${{matrix.config.installed_clang_version}} \ |
46 | | - clang-tidy-${{matrix.config.installed_clang_version}} \ |
47 | | - clang-format-${{matrix.config.installed_clang_version}} \ |
48 | | - clang-tools-${{matrix.config.installed_clang_version}} \ |
49 | | - llvm-${{matrix.config.installed_clang_version}}-dev \ |
50 | | - lld-${{matrix.config.installed_clang_version}} \ |
51 | | - lldb-${{matrix.config.installed_clang_version}} \ |
52 | | - llvm-${{matrix.config.installed_clang_version}}-tools \ |
53 | | - libc++-${{matrix.config.installed_clang_version}}-dev \ |
54 | | - libc++abi-${{matrix.config.installed_clang_version}}-dev \ |
55 | | - libclang-common-${{matrix.config.installed_clang_version}}-dev \ |
56 | | - libclang-${{matrix.config.installed_clang_version}}-dev \ |
57 | | - libclang-cpp${{matrix.config.installed_clang_version}}-dev \ |
58 | | - libomp-${{matrix.config.installed_clang_version}}-dev \ |
59 | | - libunwind-${{matrix.config.installed_clang_version}}-dev \ |
60 | | - libc++-dev libc++1 libc++abi-dev libc++abi1 |
61 | | - # Install LLVM+Clang. |
62 | | - CLANG_VERSION=$(echo ${{matrix.config.toolchain}} | cut -d '-' -f2) |
63 | | - wget https://apt.llvm.org/llvm.sh |
64 | | - chmod +x llvm.sh |
65 | | - sudo ./llvm.sh ${CLANG_VERSION} all |
66 | | - # Link Clang libraries (if not done by llvm.sh - some links are already set). |
67 | | - sudo ln -fs /usr/lib/llvm-${CLANG_VERSION}/lib/lib* /usr/lib/x86_64-linux-gnu/ || true |
68 | | - # If Clang 17, install a newer version of libc++ and libc++abi. |
69 | | - [[ ${CLANG_VERSION} = 17 ]] && sudo apt-get install libc++-dev libc++1 libc++abi-dev libc++abi1 |
| 40 | + sudo apt-get install -y libc++-dev libc++1 libc++abi-dev libc++abi1 |
70 | 41 | find /usr/lib/x86_64-linux-gnu/ -name libc++.so* || true |
71 | | - clang++-${CLANG_VERSION} --version |
72 | | - - name: Install GCC |
73 | | - if: startsWith(matrix.config.name, 'Ubuntu GCC') |
74 | | - run: | |
75 | | - set -x |
76 | | - # Remove existing GCC installations. |
77 | | - sudo apt-get remove gcc-13 g++-13 gcc-14 g++-14 gcc g++ |
78 | | - sudo apt update |
79 | | - # Install GCC. |
80 | | - GCC_VERSION=$(echo ${{matrix.config.toolchain}} | cut -d '-' -f2) |
81 | | - echo "GCC_VERSION=$GCC_VERSION" |
82 | | - sudo apt-get install g++-${GCC_VERSION} gcc-${GCC_VERSION} |
83 | | - find /usr/lib/x86_64-linux-gnu/ -name libstdc++.so* |
84 | | - g++-${GCC_VERSION} --version |
85 | 42 | - name: Install Gcovr |
86 | 43 | if: matrix.config.coverage |
87 | 44 | run: | |
88 | 45 | set -x |
89 | | - sudo apt-get install gcovr |
| 46 | + sudo apt-get install -y gcovr |
90 | 47 | - name: CMake Configure |
91 | 48 | run: | |
92 | 49 | set -x |
|
142 | 99 | if: matrix.config.coverage |
143 | 100 | uses: coverallsapp/github-action@main |
144 | 101 | with: |
145 | | - file: ${{runner.workspace}}/optional/.build/coverage.json |
| 102 | + file: .build/coverage.json |
146 | 103 | github-token: ${{ secrets.GITHUB_TOKEN }} |
147 | 104 |
|
148 | 105 | create-issue-when-fault: |
|
0 commit comments