Restore CI jobs #609
This file contains 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, pull_request, workflow_dispatch] | |
concurrency: | |
group: environment-${{github.ref}} | |
cancel-in-progress: true | |
jobs: | |
build: | |
name: ${{matrix.platform.name}} ${{matrix.type.name}} ${{matrix.config.name}} | |
runs-on: ${{matrix.platform.os}} | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- { name: Windows MSVC, os: windows-latest } | |
# - { name: Windows ClangCL, os: windows-latest, flags: -T ClangCL } | |
# - { name: Windows Clang, os: windows-latest, flags: -GNinja -DCMAKE_CXX_COMPILER=clang++ } | |
# - { name: Linux GCC, os: ubuntu-24.04, flags: -GNinja -DCMAKE_CXX_COMPILER=g++-14 } | |
- { name: Linux Clang, os: ubuntu-24.04, flags: -GNinja -DCMAKE_CXX_COMPILER=clang++ } | |
- { name: macOS GCC, os: macos-latest, flags: -GNinja -DCMAKE_CXX_COMPILER=g++-14 } | |
- { name: macOS Clang, os: macos-latest, flags: -GNinja -DCMAKE_CXX_COMPILER=clang++ } | |
type: | |
- { name: Shared, flags: "ON" } | |
- { name: Static, flags: "OFF" } | |
config: | |
- { name: Debug } | |
- { name: Release } | |
steps: | |
- name: Get CMake and Ninja | |
uses: lukka/get-cmake@latest | |
with: | |
cmakeVersion: 3.28 | |
ninjaVersion: latest | |
- name: Install Linux Dependencies | |
if: runner.os == 'Linux' | |
run: sudo apt install g++-14 ninja-build | |
- name: Install macOS Dependencies | |
if: runner.os == 'macOS' | |
run: | | |
brew update | |
brew install gcc llvm ninja | |
echo /opt/homebrew/opt/llvm/bin >> $GITHUB_PATH | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Configure | |
run: cmake --preset dev ${{matrix.platform.flags}} -DBUILD_SHARED_LIBS=${{matrix.type.flags}} -DCMAKE_BUILD_TYPE=${{matrix.config.name}} -DCMAKE_VERBOSE_MAKEFILE=ON | |
- name: Build | |
run: cmake --build --preset dev --config ${{matrix.config.name}} | |
- name: Test | |
run: ctest --preset dev --build-config ${{matrix.config.name}} | |
coverage: | |
name: Coverage | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Install Dependencies | |
run: sudo apt install gcovr ninja-build | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Configure | |
run: cmake --preset coverage -GNinja -DCMAKE_CXX_COMPILER=clang++ | |
- name: Build | |
run: cmake --build build | |
- name: Test | |
run: ctest --test-dir build --output-on-failure | |
- name: Generate Coverage Report | |
run: gcovr -x build/coverage.out -s -f 'src/.*' -f 'include/argon/.*' . | |
- name: Upload Coverage Report | |
uses: codecov/codecov-action@v4 | |
with: | |
directory: build | |
files: ./build/coverage.out | |
format: | |
name: clang-format | |
runs-on: macos-latest | |
steps: | |
- name: Install Dependencies | |
run: | | |
brew update | |
brew install llvm ninja | |
echo /opt/homebrew/opt/llvm/bin >> $GITHUB_PATH | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Configure | |
run: cmake --preset clang-tools -GNinja | |
- name: Format | |
run: | | |
cmake --build build --target format | |
git diff --exit-code | |
tidy: | |
name: clang-tidy | |
runs-on: macos-latest | |
steps: | |
- name: Install Dependencies | |
run: | | |
brew update | |
brew install llvm ninja | |
echo /opt/homebrew/opt/llvm/bin >> $GITHUB_PATH | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Configure | |
run: cmake --preset clang-tools -GNinja | |
- name: Tidy | |
run: cmake --build build --target tidy | |
sanitize: | |
name: ${{matrix.sanitizer.name}} | |
runs-on: ubuntu-24.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
sanitizer: | |
- { name: ASan, preset: asan } | |
- { name: UBSan, preset: ubsan } | |
steps: | |
- name: Install Dependencies | |
run: sudo apt install ninja-build | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Configure | |
run: cmake --preset ${{matrix.sanitizer.preset}} -GNinja | |
- name: Build | |
run: cmake --build build | |
- name: Test | |
run: ctest --test-dir build --output-on-failure | |
docs: | |
name: Docs | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Install Doxygen | |
run: sudo apt install doxygen graphviz ninja-build | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Configure | |
run: cmake -B build -GNinja -DCMAKE_CXX_COMPILER=clang++ | |
- name: Build Doxygen Site | |
run: cmake --build build --target docs |