Enable bugprone-*
checks for clang-tidy
#240
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] | |
release: | |
types: [published] | |
branches: [main] | |
pull_request: | |
workflow_dispatch: | |
jobs: | |
qa: | |
name: Run pre-commit hooks | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: pre-commit/[email protected] | |
build: | |
name: Build and test | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- platform: linux | |
os: ubuntu-22.04 | |
compiler: gcc-default | |
is_main: true | |
- platform: linux | |
os: ubuntu-22.04 | |
compiler: gcc-latest | |
is_main: false | |
- platform: linux | |
os: ubuntu-22.04 | |
compiler: clang | |
is_main: false | |
- platform: windows | |
os: windows-2022 | |
compiler: msvc | |
is_main: true | |
env: | |
VCPKG_ROOT: "vcpkg" | |
VCPKG_BINARY_SOURCES: "clear;nuget,GitHub,readwrite" | |
# Update when there is a new version of gcc available | |
LATEST_GCC_VERSION: 13 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up MSVC (Windows) | |
if: matrix.platform == 'windows' | |
uses: ilammy/msvc-dev-cmd@v1 | |
with: | |
arch: x64 | |
- name: Install dependencies (Linux) | |
if: matrix.platform == 'linux' | |
run: | | |
sudo apt update | |
sudo apt upgrade -y | |
sudo apt install --no-install-recommends build-essential ninja-build | |
- name: Install latest gcc (Linux) | |
if: matrix.compiler == 'gcc-latest' | |
run: | | |
sudo add-apt-repository ppa:ubuntu-toolchain-r/test | |
sudo apt-get update | |
sudo apt-get install g++-$LATEST_GCC_VERSION | |
# Use environment variable to tell CMake to compile with this version of gcc | |
echo CXX=g++-$LATEST_GCC_VERSION >> "$GITHUB_ENV" | |
- name: Install clang (Linux) | |
if: matrix.platform == 'linux' && matrix.compiler == 'clang' | |
run: | | |
sudo apt install --no-install-recommends clang | |
# Use environment variable to tell CMake to compile with clang | |
echo CXX=clang++ >> "$GITHUB_ENV" | |
- name: Install VCPKG | |
run: | | |
git clone https://github.com/Microsoft/vcpkg.git | |
cd vcpkg | |
./bootstrap-vcpkg.sh -disableMetrics | |
- name: Configure HealthGPS (debug) | |
run: | | |
cmake --preset=${{ matrix.platform }}-debug -DWARNINGS_AS_ERRORS=ON | |
- uses: ZedThree/[email protected] | |
if: matrix.compiler == 'gcc-default' && github.event_name == 'pull_request' | |
id: review | |
with: | |
build_dir: out/build/linux-debug | |
# Uploads an artefact containing clang_fixes.json | |
- uses: ZedThree/clang-tidy-review/[email protected] | |
if: matrix.compiler == 'gcc-default' && github.event_name == 'pull_request' | |
id: upload-review | |
# If there are any comments, fail the check | |
- if: steps.review.outputs.total_comments > 0 && matrix.compiler == 'gcc-default' && github.event_name == 'pull_request' | |
run: exit 1 | |
- uses: ammaraskar/gcc-problem-matcher@master | |
- name: Build HealthGPS (debug) | |
if: "!cancelled()" # Run this step, even if the previous one fails | |
run: | | |
cmake --build --preset=debug-build-${{ matrix.platform }} --target=install | |
- name: Build HealthGPS (release) | |
if: "!cancelled()" # Run this step, even if the previous one fails | |
run: | | |
cmake --preset=${{ matrix.platform }}-release -DWARNINGS_AS_ERRORS=ON | |
cmake --build --preset=release-build-${{ matrix.platform }} --target=install | |
- name: Upload artifacts | |
if: matrix.is_main | |
uses: actions/upload-artifact@v3 | |
with: | |
name: health-gps-${{ matrix.platform }} | |
path: | | |
${{ github.workspace }}/out/install/${{ matrix.platform }}-*/* | |
- name: Run tests | |
run: ctest --preset=core-test-${{ matrix.platform }} | |
- name: Zip output folder | |
if: startsWith(github.ref, 'refs/tags/') && matrix.is_main | |
working-directory: ${{github.workspace}}/out/install/${{ matrix.platform }}-release/bin/ | |
run: | | |
mkdir ${{github.workspace}}/artifact | |
7z a -tzip ${{github.workspace}}/artifact/health_gps_${{ matrix.platform }}.zip *.dll *.Console* | |
- name: Upload release artifacts | |
if: startsWith(github.ref, 'refs/tags/') && matrix.is_main | |
uses: softprops/action-gh-release@v1 | |
with: | |
files: artifact/health_gps_${{ matrix.platform }}.zip |