async exec fixes #107
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: CI | |
| on: | |
| push: | |
| branches: ["**"] | |
| pull_request: | |
| branches: ["**"] | |
| jobs: | |
| build: | |
| name: ${{ matrix.os }} / ${{ matrix.compiler }} / ${{ matrix.build_type }} | |
| strategy: | |
| fail-fast: false # let all matrix cells run even if one fails | |
| matrix: | |
| include: | |
| # ── Debian stable ────────────────────────────────────────────────── | |
| - os: debian:stable | |
| runner: ubuntu-latest | |
| compiler: gcc | |
| cc: gcc | |
| cxx: g++ | |
| build_type: Release | |
| - os: debian:stable | |
| runner: ubuntu-latest | |
| compiler: gcc | |
| cc: gcc | |
| cxx: g++ | |
| build_type: Debug | |
| - os: debian:stable | |
| runner: ubuntu-latest | |
| compiler: clang | |
| cc: clang | |
| cxx: clang++ | |
| build_type: Release | |
| - os: debian:stable | |
| runner: ubuntu-latest | |
| compiler: clang | |
| cc: clang | |
| cxx: clang++ | |
| build_type: Debug | |
| # ── Ubuntu LTS (24.04) ───────────────────────────────────────────── | |
| - os: ubuntu:24.04 | |
| runner: ubuntu-latest | |
| compiler: gcc | |
| cc: gcc | |
| cxx: g++ | |
| build_type: Release | |
| - os: ubuntu:24.04 | |
| runner: ubuntu-latest | |
| compiler: gcc | |
| cc: gcc | |
| cxx: g++ | |
| build_type: Debug | |
| - os: ubuntu:24.04 | |
| runner: ubuntu-latest | |
| compiler: clang | |
| cc: clang | |
| cxx: clang++ | |
| build_type: Release | |
| - os: ubuntu:24.04 | |
| runner: ubuntu-latest | |
| compiler: clang | |
| cc: clang | |
| cxx: clang++ | |
| build_type: Debug | |
| # ── Fedora (latest) ─────────────────────────────────────────────────── | |
| - os: fedora:latest | |
| runner: ubuntu-latest | |
| compiler: gcc | |
| cc: gcc | |
| cxx: g++ | |
| build_type: Release | |
| - os: fedora:latest | |
| runner: ubuntu-latest | |
| compiler: gcc | |
| cc: gcc | |
| cxx: g++ | |
| build_type: Debug | |
| - os: fedora:latest | |
| runner: ubuntu-latest | |
| compiler: clang | |
| cc: clang | |
| cxx: clang++ | |
| build_type: Release | |
| - os: fedora:latest | |
| runner: ubuntu-latest | |
| compiler: clang | |
| cc: clang | |
| cxx: clang++ | |
| build_type: Debug | |
| # ── Arch Linux (stable) ─────────────────────────────────────────────── | |
| - os: archlinux:latest | |
| runner: ubuntu-latest | |
| compiler: gcc | |
| cc: gcc | |
| cxx: g++ | |
| build_type: Release | |
| - os: archlinux:latest | |
| runner: ubuntu-latest | |
| compiler: gcc | |
| cc: gcc | |
| cxx: g++ | |
| build_type: Debug | |
| - os: archlinux:latest | |
| runner: ubuntu-latest | |
| compiler: clang | |
| cc: clang | |
| cxx: clang++ | |
| build_type: Release | |
| - os: archlinux:latest | |
| runner: ubuntu-latest | |
| compiler: clang | |
| cc: clang | |
| cxx: clang++ | |
| build_type: Debug | |
| runs-on: ${{ matrix.runner }} | |
| container: | |
| image: ${{ matrix.os }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Install dependencies | |
| env: | |
| DEBIAN_FRONTEND: noninteractive | |
| run: bash dependencies.sh --compiler=${{ matrix.compiler }} | |
| - name: Cache CMake FetchContent (spdlog, clipp, fmt) | |
| uses: actions/cache@v5 | |
| with: | |
| path: build/_deps | |
| key: fetchcontent-${{ matrix.os }}-${{ matrix.compiler }}-${{ hashFiles('CMakeLists.txt') }} | |
| restore-keys: | | |
| fetchcontent-${{ matrix.os }}-${{ matrix.compiler }}- | |
| fetchcontent-${{ matrix.os }}- | |
| - name: Configure git identity (needed by tests that create commits) | |
| run: | | |
| git config --global user.email "ci@github-actions" | |
| git config --global user.name "GitHub Actions" | |
| git config --global init.defaultBranch master | |
| - name: Build | |
| env: | |
| CC: ${{ matrix.cc }} | |
| CXX: ${{ matrix.cxx }} | |
| CI: "1" | |
| run: make TYPE=${{ matrix.build_type }} | |
| - name: Test | |
| env: | |
| CC: ${{ matrix.cc }} | |
| CXX: ${{ matrix.cxx }} | |
| CI: "1" | |
| run: make TYPE=${{ matrix.build_type }} test | |
| - name: Compute artifact name | |
| if: failure() | |
| id: artifact-name | |
| run: | | |
| # Colons and slashes are not allowed in artifact names; replace with dashes. | |
| raw="test-artifacts-${{ matrix.os }}-${{ matrix.compiler }}-${{ matrix.build_type }}" | |
| echo "name=${raw//[:\\/]/-}" >> "$GITHUB_OUTPUT" | |
| - name: Upload test artifacts on failure | |
| if: failure() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: ${{ steps.artifact-name.outputs.name }} | |
| path: | | |
| build/test/ | |
| build/Testing/ | |
| retention-days: 7 | |
| coverage: | |
| name: Coverage (debian:stable / gcc / Debug) | |
| runs-on: ubuntu-latest | |
| container: | |
| image: debian:stable | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Install dependencies | |
| env: | |
| DEBIAN_FRONTEND: noninteractive | |
| run: bash dependencies.sh --compiler=gcc --coverage | |
| - name: Cache CMake FetchContent (spdlog, clipp, fmt) | |
| uses: actions/cache@v5 | |
| with: | |
| path: build/_deps | |
| key: fetchcontent-coverage-${{ hashFiles('CMakeLists.txt') }} | |
| restore-keys: | | |
| fetchcontent-coverage- | |
| - name: Configure git identity (needed by tests that create commits) | |
| run: | | |
| git config --global user.email "ci@github-actions" | |
| git config --global user.name "GitHub Actions" | |
| git config --global init.defaultBranch master | |
| - name: Build, test, and collect coverage | |
| env: | |
| CC: gcc | |
| CXX: g++ | |
| CI: "1" | |
| run: make CC=gcc CXX=g++ TYPE=Debug coverage REBUILD=1 | |
| - name: Upload to Codecov | |
| uses: codecov/codecov-action@v5 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: ./coverage.info | |
| flags: unittests | |
| name: debian-stable-gcc-debug | |
| verbose: true | |
| fail_ci_if_error: true |