Ref code style to use clang-format 17 options #144
Workflow file for this run
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] | |
jobs: | |
lint: | |
name: Lint | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Get latest CMake and ninja | |
uses: lukka/get-cmake@latest | |
- name: Install static analyzers | |
run: sudo apt-get install clang-tidy cppcheck -y -q | |
- name: Configure | |
shell: pwsh | |
run: cmake --preset=ci-lint | |
- name: Build | |
run: cmake --build build | |
- name: Check header formatting | |
uses: jidicula/clang-format-action@v4.11.0 | |
with: | |
clang-format-version: '17' | |
check-path: 'include/perturb' | |
- name: Check source formatting | |
uses: jidicula/clang-format-action@v4.11.0 | |
with: | |
clang-format-version: '17' | |
check-path: 'src' | |
- name: Check tests formatting | |
uses: jidicula/clang-format-action@v4.11.0 | |
with: | |
clang-format-version: '17' | |
check-path: 'tests' | |
examples: | |
name: Examples | |
needs: [ lint ] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Get latest CMake and ninja | |
uses: lukka/get-cmake@latest | |
- name: Configure local example | |
working-directory: examples/cmake-local | |
run: cmake -S . -B build | |
- name: Build local example | |
working-directory: examples/cmake-local | |
run: cmake --build build | |
- name: Run local example | |
working-directory: examples/cmake-local/build | |
run: ./VeryCoolProject | |
- if: github.ref == 'refs/heads/master' | |
&& github.event_name == 'push' | |
&& github.repository_owner == 'gunvirranu' | |
run: echo "RUN_FETCH_EXAMPLE=true" >> $GITHUB_ENV | |
- name: Configure fetch-content example | |
working-directory: examples/cmake-fetch-content | |
if: env.RUN_FETCH_EXAMPLE == 'true' | |
run: cmake -S . -B build | |
- name: Build fetch-content example | |
working-directory: examples/cmake-fetch-content | |
if: env.RUN_FETCH_EXAMPLE == 'true' | |
run: cmake --build build | |
- name: Run fetch-content example | |
working-directory: examples/cmake-fetch-content/build | |
if: env.RUN_FETCH_EXAMPLE == 'true' | |
run: ./VeryCoolProject | |
test: | |
name: Test | |
needs: [ examples ] | |
strategy: | |
matrix: | |
os: [ ubuntu-latest, macos-latest, windows-2022 ] | |
disable_io: [ OFF ] | |
include: | |
- os: ubuntu-latest | |
disable_io: ON | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Get latest CMake and ninja | |
uses: lukka/get-cmake@latest | |
- name: Configure | |
shell: pwsh | |
run: cmake "--preset=ci-$("${{ matrix.os }}".split("-")[0])" -Dperturb_DISABLE_IO=${{ matrix.disable_io }} | |
- name: Build | |
run: cmake --build build --config Release | |
- name: Install | |
run: cmake --install build --config Release --prefix prefix | |
- name: Test | |
working-directory: build | |
run: ctest --output-on-failure -C Release | |
docs: | |
name: Docs | |
needs: [ examples, test ] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build docs with Doxygen | |
uses: mattnotmitt/doxygen-action@1.9.5 | |
with: | |
working-directory: docs | |
- name: Deploy docs to Github pages | |
if: github.ref == 'refs/heads/master' | |
&& github.event_name == 'push' | |
&& github.repository_owner == 'gunvirranu' | |
uses: peaceiris/actions-gh-pages@v3 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
publish_dir: docs/html |