ci: add sanitizer test matrix #57
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: Tests | |
| on: | |
| workflow_dispatch: | |
| push: | |
| branches: | |
| - main | |
| - ci/** | |
| pull_request: | |
| branches: | |
| - main | |
| jobs: | |
| test-on-msvc: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| toolset: [142, 143] | |
| cppstd: ['17', '20', '23'] | |
| build-type: [Debug, Release] | |
| exclude: | |
| - toolset: 142 | |
| cppstd: '23' | |
| include: | |
| - toolset: 142 | |
| conan-compiler-version: 192 | |
| - toolset: 143 | |
| conan-compiler-version: 194 | |
| - build-type: Debug | |
| cmake-preset: conan-debug | |
| - build-type: Release | |
| cmake-preset: conan-release | |
| name: MSVC ${{ matrix.toolset }} - C++${{ matrix.cppstd }} - ${{ matrix.build-type }} | |
| runs-on: windows-2022 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - name: Install Conan | |
| uses: turtlebrowser/get-conan@main | |
| - name: Setup Conan | |
| run: | | |
| conan --version | |
| conan profile detect | |
| - name: Install CMake | |
| uses: lukka/get-cmake@latest | |
| - name: Install dependencies | |
| run: > | |
| conan install . | |
| -c tools.microsoft.msbuild:vs_version=17 | |
| -s compiler.version=${{ matrix.conan-compiler-version }} | |
| -s compiler.cppstd=${{ matrix.cppstd }} | |
| -s build_type=${{ matrix.build-type }} | |
| -b missing | |
| - name: CMake Configure | |
| run: | | |
| cmake --list-presets | |
| cmake --preset conan-default -DZEUS_EXPECTED_TEST_ASAN_AUTO=OFF -DZEUS_EXPECTED_TEST_UBSAN_AUTO=OFF | |
| - name: Build | |
| run: | | |
| cmake --build --list-presets | |
| cmake --build --preset ${{ matrix.cmake-preset }} | |
| - name: Test | |
| run: | | |
| ctest --list-presets | |
| ctest --preset ${{ matrix.cmake-preset }} | |
| test-on-gcc: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| gcc: | |
| - version: 11 | |
| os: ubuntu-22.04 | |
| - version: 13 | |
| os: ubuntu-24.04 | |
| - version: 15 | |
| os: ubuntu-24.04 | |
| cppstd: ['17', '20', '23'] | |
| build-type: [Debug, Release] | |
| include: | |
| - build-type: Debug | |
| cmake-preset: conan-debug | |
| - build-type: Release | |
| cmake-preset: conan-release | |
| name: GCC ${{ matrix.gcc.version }} - C++${{ matrix.cppstd }} - ${{ matrix.build-type }} | |
| runs-on: ${{ matrix.gcc.os }} | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - name: Setup GCC | |
| if: matrix.gcc.version == 15 | |
| uses: egor-tensin/setup-gcc@v2 | |
| with: | |
| version: ${{ matrix.gcc.version }} | |
| - name: Check GCC Version | |
| shell: bash | |
| run: | | |
| gcc -dumpversion | |
| (( $(gcc -dumpversion | cut -d. -f1) == ${{ matrix.gcc.version }} )) | |
| - name: Install Conan | |
| uses: turtlebrowser/get-conan@main | |
| - name: Setup Conan | |
| run: | | |
| conan --version | |
| conan profile detect | |
| - name: Install CMake | |
| uses: lukka/get-cmake@latest | |
| - name: Install dependencies | |
| run: > | |
| conan install . | |
| -s compiler.cppstd=${{ matrix.cppstd }} | |
| -s build_type=${{ matrix.build-type }} | |
| -b missing | |
| - name: CMake Configure | |
| run: | | |
| cmake --list-presets | |
| cmake --preset ${{ matrix.cmake-preset }} -DZEUS_EXPECTED_TEST_ASAN_AUTO=OFF -DZEUS_EXPECTED_TEST_UBSAN_AUTO=OFF | |
| - name: Build | |
| run: | | |
| cmake --build --list-presets | |
| cmake --build --preset ${{ matrix.cmake-preset }} | |
| - name: Test | |
| run: | | |
| ctest --list-presets | |
| ctest --preset ${{ matrix.cmake-preset }} | |
| test-on-gcc-8: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| cppstd: ['17'] | |
| build-type: [Debug, Release] | |
| include: | |
| - build-type: Debug | |
| cmake-preset: conan-debug | |
| - build-type: Release | |
| cmake-preset: conan-release | |
| name: GCC 8 - C++${{ matrix.cppstd }} - ${{ matrix.build-type }} | |
| runs-on: ubuntu-22.04 | |
| container: ubuntu:20.04 | |
| defaults: | |
| run: | |
| shell: bash | |
| env: | |
| CC: gcc-8 | |
| CXX: g++-8 | |
| steps: | |
| - name: Prepare container | |
| run: | | |
| apt-get update | |
| DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ | |
| ca-certificates \ | |
| gcc-8 \ | |
| g++-8 \ | |
| git \ | |
| make \ | |
| python3-pip \ | |
| unzip | |
| - uses: actions/checkout@v7 | |
| - name: Check GCC Version | |
| run: | | |
| compiler_version="$("$CC" -dumpfullversion -dumpversion)" | |
| echo "$compiler_version" | |
| [[ "${compiler_version%%.*}" == 8 ]] | |
| - name: Install Conan | |
| uses: turtlebrowser/get-conan@main | |
| - name: Setup Conan | |
| run: | | |
| conan --version | |
| conan profile detect | |
| - name: Install CMake | |
| uses: lukka/get-cmake@latest | |
| - name: Install dependencies | |
| run: > | |
| conan install . | |
| -s compiler.cppstd=${{ matrix.cppstd }} | |
| -s build_type=${{ matrix.build-type }} | |
| -b missing | |
| - name: CMake Configure | |
| run: | | |
| cmake --list-presets | |
| cmake --preset ${{ matrix.cmake-preset }} -DZEUS_EXPECTED_TEST_ASAN_AUTO=OFF -DZEUS_EXPECTED_TEST_UBSAN_AUTO=OFF | |
| - name: Build | |
| run: | | |
| cmake --build --list-presets | |
| cmake --build --preset ${{ matrix.cmake-preset }} | |
| - name: Test | |
| run: | | |
| ctest --list-presets | |
| ctest --preset ${{ matrix.cmake-preset }} | |
| test-on-clang-libstdcxx: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| clang-version: [11, 14, 18, 22] | |
| cppstd: ['17', '20', '23'] | |
| build-type: [Debug, Release] | |
| exclude: | |
| - clang-version: 11 | |
| cppstd: '23' | |
| include: | |
| - build-type: Debug | |
| cmake-preset: conan-debug | |
| - build-type: Release | |
| cmake-preset: conan-release | |
| name: Clang ${{ matrix.clang-version }} + libstdc++ - C++${{ matrix.cppstd }} - ${{ matrix.build-type }} | |
| runs-on: ubuntu-22.04 | |
| env: | |
| CC: clang-${{ matrix.clang-version }} | |
| CXX: clang++-${{ matrix.clang-version }} | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - name: Install Clang | |
| uses: egor-tensin/setup-clang@v2 | |
| with: | |
| version: ${{ matrix.clang-version }} | |
| cc: 0 | |
| - name: Check Clang Version | |
| shell: bash | |
| run: | | |
| "$CC" --version | |
| compiler_major="$("$CC" -dM -E -x c /dev/null | awk '$2 == "__clang_major__" {print $3}')" | |
| [[ "$compiler_major" == "${{ matrix.clang-version }}" ]] | |
| - name: Install Conan | |
| uses: turtlebrowser/get-conan@main | |
| - name: Setup Conan | |
| run: | | |
| conan --version | |
| conan profile detect --force | |
| conan profile show -pr default --format=json | | |
| jq -e --arg version "${{ matrix.clang-version }}" ' | |
| .host.settings.compiler == "clang" | |
| and .host.settings["compiler.version"] == $version | |
| and .host.settings["compiler.libcxx"] == "libstdc++11" | |
| ' | |
| - name: Install CMake | |
| uses: lukka/get-cmake@latest | |
| - name: Install dependencies | |
| run: > | |
| conan install . | |
| -s compiler.cppstd=${{ matrix.cppstd }} | |
| -s build_type=${{ matrix.build-type }} | |
| -b missing | |
| - name: CMake Configure | |
| run: | | |
| cmake --list-presets | |
| cmake --preset ${{ matrix.cmake-preset }} -DZEUS_EXPECTED_TEST_ASAN_AUTO=OFF -DZEUS_EXPECTED_TEST_UBSAN_AUTO=OFF | |
| - name: Build | |
| run: | | |
| cmake --build --list-presets | |
| cmake --build --preset ${{ matrix.cmake-preset }} | |
| - name: Test | |
| run: | | |
| ctest --list-presets | |
| ctest --preset ${{ matrix.cmake-preset }} | |
| test-on-old-gcc: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-22.04] | |
| gcc-version: [9] | |
| cppstd: ['17', '20'] | |
| build-type: [Debug, Release] | |
| include: | |
| - build-type: Debug | |
| cmake-preset: conan-debug | |
| - build-type: Release | |
| cmake-preset: conan-release | |
| name: GCC ${{ matrix.gcc-version }} - C++${{ matrix.cppstd }} - ${{ matrix.build-type }} | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - name: Setup GCC | |
| uses: egor-tensin/setup-gcc@v1 | |
| with: | |
| version: ${{ matrix.gcc-version }} | |
| - name: Check GCC Version | |
| shell: bash | |
| run: | | |
| gcc -dumpversion | |
| (( $(gcc -dumpversion | cut -d. -f1) == ${{ matrix.gcc-version }} )) | |
| - name: Install Conan | |
| uses: turtlebrowser/get-conan@main | |
| - name: Setup Conan | |
| run: | | |
| conan --version | |
| conan profile detect | |
| - name: Install CMake | |
| uses: lukka/get-cmake@latest | |
| - name: Install dependencies | |
| run: > | |
| conan install . | |
| -s compiler.cppstd=${{ matrix.cppstd }} | |
| -s build_type=${{ matrix.build-type }} | |
| -b missing | |
| - name: CMake Configure | |
| run: | | |
| cmake --list-presets | |
| cmake --preset ${{ matrix.cmake-preset }} -DZEUS_EXPECTED_TEST_ASAN_AUTO=OFF -DZEUS_EXPECTED_TEST_UBSAN_AUTO=OFF | |
| - name: Build | |
| run: | | |
| cmake --build --list-presets | |
| cmake --build --preset ${{ matrix.cmake-preset }} | |
| - name: Test | |
| run: | | |
| ctest --list-presets | |
| ctest --preset ${{ matrix.cmake-preset }} |