Skip to content

Professionalize the C++ exercise repository #68

Professionalize the C++ exercise repository

Professionalize the C++ exercise repository #68

Workflow file for this run

name: C++ CI
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
contents: read
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
check:
runs-on: ubuntu-latest
env:
ASAN_OPTIONS: detect_leaks=1
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- name: Install build tools
run: |
sudo apt-get update
sudo apt-get install -y g++-14 make clang-format libtbb-dev
- name: Run all checks
run: make check SANITIZERS="address thread undefined"
coverage:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- name: Install coverage tools
run: |
sudo apt-get update
sudo apt-get install -y g++-14 make gcovr jq libtbb-dev
- name: Generate coverage report
run: make coverage COVERAGE_MIN=0 COVERAGE_FUNCTION_MIN=0 COVERAGE_BRANCH_MIN=0
- name: Upload coverage report
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: coverage-report
path: coverage/
retention-days: 14
- name: Enforce coverage thresholds
run: |
jq --exit-status \
'.line_percent >= 80 and .function_percent >= 80 and .branch_percent >= 70' \
coverage/summary.json