Files
cpp-project-template/.gitea/workflows/build.yaml
T
2026-05-18 09:41:16 +08:00

185 lines
6.4 KiB
YAML

name: cpp-template
on:
push:
pull_request:
jobs:
format:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Check formatting
run: python3 scripts/format.py --check
debug:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Configure, build, and test debug preset
run: cmake --preset debug && cmake --build --preset debug && ctest --preset debug --output-on-failure
- name: Upload debug failure evidence
if: always()
uses: actions/upload-artifact@v4
with:
name: debug-failure-evidence
path: |
.sisyphus/evidence/**
build/**/Testing/Temporary/LastTest.log
build/**/CMakeCache.txt
build/**/CMakeFiles/CMakeOutput.log
build/**/CMakeFiles/CMakeError.log
clang-tidy:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Configure debug preset for compile commands
run: cmake --preset debug
- name: Run clang-tidy
run: python3 scripts/clang_tidy.py --build-dir build/debug
- name: Upload clang-tidy failure evidence
if: always()
uses: actions/upload-artifact@v4
with:
name: clang-tidy-failure-evidence
path: |
.sisyphus/evidence/**
build/**/Testing/Temporary/LastTest.log
build/**/CMakeCache.txt
build/**/CMakeFiles/CMakeOutput.log
build/**/CMakeFiles/CMakeError.log
release:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Configure, build, and test release preset
run: cmake --preset release && cmake --build --preset release && ctest --preset release --output-on-failure
- name: Upload release failure evidence
if: always()
uses: actions/upload-artifact@v4
with:
name: release-failure-evidence
path: |
.sisyphus/evidence/**
build/**/Testing/Temporary/LastTest.log
build/**/CMakeCache.txt
build/**/CMakeFiles/CMakeOutput.log
build/**/CMakeFiles/CMakeError.log
cxx11-smoke:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Configure and build C++11 smoke preset
run: cmake --preset cxx11-smoke && cmake --build --preset cxx11-smoke
- name: Upload C++11 smoke failure evidence
if: always()
uses: actions/upload-artifact@v4
with:
name: cxx11-smoke-failure-evidence
path: |
.sisyphus/evidence/**
build/**/Testing/Temporary/LastTest.log
build/**/CMakeCache.txt
build/**/CMakeFiles/CMakeOutput.log
build/**/CMakeFiles/CMakeError.log
install-consumer:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Run install-consumer QA
run: python3 scripts/dev_check.py install-consumer
- name: Upload install-consumer failure evidence
if: always()
uses: actions/upload-artifact@v4
with:
name: install-consumer-failure-evidence
path: |
.sisyphus/evidence/**
build/**/Testing/Temporary/LastTest.log
build/**/CMakeCache.txt
build/**/CMakeFiles/CMakeOutput.log
build/**/CMakeFiles/CMakeError.log
asan:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Configure, build, and test ASan preset
run: cmake --preset asan && cmake --build --preset asan && ctest --preset asan --output-on-failure
- name: Upload ASan failure evidence
if: always()
uses: actions/upload-artifact@v4
with:
name: asan-failure-evidence
path: |
.sisyphus/evidence/**
build/**/Testing/Temporary/LastTest.log
build/**/CMakeCache.txt
build/**/CMakeFiles/CMakeOutput.log
build/**/CMakeFiles/CMakeError.log
tsan:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Configure, build, and test TSan preset
run: cmake --preset tsan && cmake --build --preset tsan && ctest --preset tsan --output-on-failure
- name: Upload TSan failure evidence
if: always()
uses: actions/upload-artifact@v4
with:
name: tsan-failure-evidence
path: |
.sisyphus/evidence/**
build/**/Testing/Temporary/LastTest.log
build/**/CMakeCache.txt
build/**/CMakeFiles/CMakeOutput.log
build/**/CMakeFiles/CMakeError.log
fuzz-smoke:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Configure, build, and run deterministic fuzz smoke
run: FUZZTEST_PRNG_SEED=42 cmake --preset fuzz && cmake --build --preset fuzz && FUZZTEST_PRNG_SEED=42 ctest --preset fuzz --output-on-failure -L fuzz_smoke
- name: Upload fuzz smoke failure evidence
if: always()
uses: actions/upload-artifact@v4
with:
name: fuzz-smoke-failure-evidence
path: |
.sisyphus/evidence/**
build/**/Testing/Temporary/LastTest.log
build/**/CMakeCache.txt
build/**/CMakeFiles/CMakeOutput.log
build/**/CMakeFiles/CMakeError.log
no-network-negative:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Check default configure avoids network fetches
run: python3 scripts/dev_check.py no-network-default
- name: Check fuzz lane avoids network fetches
run: python3 scripts/dev_check.py no-network-fuzztest-lane
- name: Check missing archive hash diagnostics
run: python3 scripts/dev_check.py no-network-missing-archive
- name: Check vendored GoogleTest isolation
run: python3 scripts/dev_check.py gtest-isolation
- name: Check FuzzTest optional feature diagnostics
run: python3 scripts/dev_check.py fuzztest-optional-features
- name: Upload no-network and negative-check failure evidence
if: always()
uses: actions/upload-artifact@v4
with:
name: no-network-negative-failure-evidence
path: |
.sisyphus/evidence/**
build/**/Testing/Temporary/LastTest.log
build/**/CMakeCache.txt
build/**/CMakeFiles/CMakeOutput.log
build/**/CMakeFiles/CMakeError.log