name: Continuous Integration on: [push, pull_request] concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: gcc: name: GCC runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: include: - gcc: "5" - gcc: "6" - gcc: "7" - gcc: "8" - gcc: "9" - gcc: "10" cxxflags: -funsigned-char # Issue #1715 - gcc: "11" - gcc: "12" steps: - name: Workaround for actions/runner-images#9491 run: sudo sysctl vm.mmap_rnd_bits=28 - name: Install run: | sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5 3B4FE6ACC0B21F32 sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ xenial main universe' sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ bionic main universe' sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ focal main universe' sudo apt-get update sudo apt-get install -y gcc-${{ matrix.gcc }} g++-${{ matrix.gcc }} timeout-minutes: 5 - name: Checkout uses: actions/checkout@v4 timeout-minutes: 1 - name: Configure run: cmake -DCMAKE_BUILD_TYPE=Debug . env: CC: gcc-${{ matrix.gcc }} CXX: g++-${{ matrix.gcc }} CXXFLAGS: ${{ matrix.cxxflags }} timeout-minutes: 1 - name: Build run: cmake --build . timeout-minutes: 10 - name: Test run: ctest --output-on-failure -C Debug . timeout-minutes: 2 clang: name: Clang strategy: fail-fast: false matrix: include: - clang: "7" runner: ubuntu-22.04 archive: focal - clang: "8" runner: ubuntu-22.04 archive: focal - clang: "9" runner: ubuntu-22.04 archive: focal - clang: "10" runner: ubuntu-22.04 archive: focal - clang: "11" runner: ubuntu-22.04 - clang: "12" runner: ubuntu-22.04 - clang: "13" runner: ubuntu-22.04 - clang: 16 - clang: 17 - clang: 18 - clang: 19 runs-on: ${{ matrix.runner || 'ubuntu-latest' }} steps: - name: Add archive repositories if: matrix.archive run: | sudo gpg --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32 sudo gpg --export 3B4FE6ACC0B21F32 | sudo tee /etc/apt/trusted.gpg.d/ubuntu-keyring.gpg > /dev/null sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ ${{ matrix.archive }} main' sudo add-apt-repository -yn 'deb http://archive.ubuntu.com/ubuntu/ ${{ matrix.archive }} universe' - name: Install Clang ${{ matrix.clang }} run: | sudo apt-get update sudo apt-get install -y clang-${{ matrix.clang }} - name: Install libunwind ${{ matrix.clang }} if: matrix.clang == 12 # dependency is missing in Ubuntu 22.04 run: sudo apt-get install -y libunwind-${{ matrix.clang }}-dev - name: Checkout uses: actions/checkout@v4 - name: Configure run: cmake -DCMAKE_BUILD_TYPE=Debug . env: CC: clang-${{ matrix.clang }} CXX: clang++-${{ matrix.clang }} CXXFLAGS: ${{ matrix.cxxflags }} - name: Build run: cmake --build . - name: Test run: ctest --output-on-failure -C Debug .