Align Codebase with Google C++ Style and Modern Practices #126
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: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
jobs: | |
clang-format-check: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Run clang-format | |
uses: jidicula/[email protected] | |
with: | |
clang-format-version: 18 | |
build-and-test-cmake: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Cache CCache | |
uses: actions/cache@v4 | |
id: ccache | |
with: | |
path: ~/.cache/ccache | |
key: ${{ runner.os }}-ccache-${{ hashFiles('conanfile.py') }}-${{ hashFiles('CMakeLists.txt') }}-${{ hashFiles('CMakePresets.json') }}-${{ github.run_id }} | |
restore-keys: | | |
${{ runner.os }}-ccache-${{ hashFiles('conanfile.py') }}-${{ hashFiles('CMakeLists.txt') }}-${{ hashFiles('CMakePresets.json') }}- | |
${{ runner.os }}-ccache- | |
- name: Setup Conan | |
uses: hankhsu1996/setup-conan@v1 | |
with: | |
conan-version: "2.5.0" | |
cache-dependencies: true | |
cache-tool: true | |
- name: Install dependencies | |
run: | | |
conan profile detect --force | |
conan install . --build=missing | |
conan install . -s build_type=Debug --build=missing | |
- name: Configure CMake and build project | |
run: | | |
cmake --preset release | |
cmake --build --preset release | |
- name: Run tests | |
run: ctest --preset release | |
build-and-test-bazel: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup Bazel | |
uses: bazel-contrib/[email protected] | |
with: | |
bazelisk-cache: true | |
disk-cache: ${{ github.workflow }} | |
repository-cache: true | |
- name: Build with Bazel | |
run: | | |
bazel build //... | |
- name: Test with Bazel | |
run: | | |
bazel test //... | |
docs: | |
runs-on: ubuntu-latest | |
container: hankhsu1996/doxygen:1.11.0 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Generate Doxygen documentation | |
run: doxygen docs/Doxyfile | |
- name: Upload Doxygen documentation artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: doxygen-docs | |
path: docs/generated/html | |
deploy: | |
if: github.event_name == 'push' && github.ref == 'refs/heads/main' | |
needs: docs | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Download Doxygen documentation artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: doxygen-docs | |
path: docs/generated/html | |
- name: Deploy to GitHub Pages | |
uses: peaceiris/actions-gh-pages@v4 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
publish_dir: ./docs/generated/html | |
publish_branch: gh-pages |