Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 46s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 29s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 1m23s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 49s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m8s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 45s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m8s
Bigfoot / Clang Format Checks (push) Successful in 13s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 49s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 31s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m30s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Successful in 1m3s
Bigfoot / Build & Test Debug with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m10s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 56s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 34s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang (Unity Build: ON, Variant: toolmode) (push) Successful in 41s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 1m27s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: toolmode) (push) Successful in 1m35s
Bigfoot / Build & Test RelWithDebInfo with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m16s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: game) (push) Successful in 37s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: OFF, Variant: toolmode) (push) Successful in 56s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang (Unity Build: ON, Variant: game) (push) Successful in 29s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: OFF, Variant: game) (push) Successful in 1m2s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: game) (push) Successful in 53s
Bigfoot / Build & Test Release with ./ConanProfiles/host/clang_asan (Unity Build: ON, Variant: toolmode) (push) Successful in 1m3s
Bigfoot / Sonarqube (game) (push) Successful in 5m17s
Bigfoot / Sonarqube (toolmode) (push) Successful in 5m39s
Reviewed-on: #5 Co-authored-by: Romain BOULLARD <romain.boullard@protonmail.com>
98 lines
4.7 KiB
YAML
98 lines
4.7 KiB
YAML
name: Bigfoot
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
- Development
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
- Development
|
|
|
|
jobs:
|
|
build-and-test:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 120
|
|
container:
|
|
image: git.romainboullard.com/bigfootdev/linuxcppbuilder:development
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
variant:
|
|
- { value: "True", name: "toolmode", projectKey: "Bigfoot-Tool", projectName: "Bigfoot Tool" }
|
|
- { value: "False", name: "game", projectKey: "Bigfoot-Game", projectName: "Bigfoot Game" }
|
|
|
|
name: "Sonarqube (${{ matrix.variant.name }})"
|
|
steps:
|
|
- name: Install Node.js
|
|
run: apt-get update && apt-get install -y nodejs
|
|
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v6
|
|
with:
|
|
fetch-depth: 0
|
|
submodules: recursive
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
|
|
- name: Read version
|
|
id: version
|
|
run: echo "version=$(cat VERSION)" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Build
|
|
run: |
|
|
conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/host/clang_coverage -pr:b=./ConanProfiles/build/clang --build=missing -s build_type=Debug -o bigfoot/*:build_tests=True -o bigfoot/*:build_benchmarks=True -o bigfoot/*:tracy=False -o bigfoot/*:toolmode=${{ matrix.variant.value }} -o bigfoot/*:vulkan=True -of build-${{ matrix.variant.name }}
|
|
. ./build-${{ matrix.variant.name }}/build/Debug/generators/conanbuild.sh
|
|
cmake -S . -B ./build-${{ matrix.variant.name }}/Debug --toolchain ./build-${{ matrix.variant.name }}/build/Debug/generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Debug -G "Ninja"
|
|
cmake --build build-${{ matrix.variant.name }}/Debug --parallel $(nproc)
|
|
. ./build-${{ matrix.variant.name }}/build/Debug/generators/deactivate_conanbuild.sh
|
|
|
|
- name: Run tests
|
|
run: |
|
|
cd ./build-${{ matrix.variant.name }}/Debug
|
|
. ../../build-${{ matrix.variant.name }}/build/Debug/generators/conanbuild.sh
|
|
LLVM_PROFILE_FILE="%p.profraw%c" xvfb-run ctest --output-on-failure
|
|
. ../../build-${{ matrix.variant.name }}/build/Debug/generators/deactivate_conanbuild.sh
|
|
|
|
- name: Clang-Tidy
|
|
run: run-clang-tidy -p ./build-${{ matrix.variant.name }}/Debug/ > tidy_result.txt
|
|
|
|
- name: Infer
|
|
run: infer run --compilation-database build-${{ matrix.variant.name }}/Debug/compile_commands.json
|
|
|
|
- name: Generate coverage report
|
|
shell: bash
|
|
run: |
|
|
# gcovr's own LLVM-JSON reader only understands coverage-mapping format
|
|
# 2.x; this image's clang 22 llvm-cov emits format 3.x, which gcovr
|
|
# rejects outright ("Wrong major version"). Bypassing gcovr's JSON
|
|
# path entirely: llvm-cov's lcov exporter is a separate, unaffected
|
|
# code path, so merge -> export lcov -> convert lcov to Cobertura.
|
|
llvm-profdata merge -sparse $(find build-${{ matrix.variant.name }}/Debug -name "*.profraw") -o merged.profdata
|
|
BINARIES=($(find build-${{ matrix.variant.name }}/Debug -maxdepth 8 -type f -executable -iname "*Tests"))
|
|
OBJECT_ARGS=$(printf -- '-object %s ' "${BINARIES[@]:1}")
|
|
llvm-cov export -format=lcov -instr-profile=merged.profdata "${BINARIES[0]}" $OBJECT_ARGS > coverage.lcov
|
|
# lcov_cobertura isn't preinstalled on the image; inject it into
|
|
# gcovr's existing pipx venv and expose its CLI on PATH.
|
|
pipx inject gcovr lcov_cobertura --include-apps
|
|
lcov_cobertura coverage.lcov -b . -o coverage.xml
|
|
|
|
- name: SonarQube Scan
|
|
uses: SonarSource/sonarqube-scan-action@v7.0.0
|
|
with:
|
|
args: >
|
|
-Dsonar.projectKey=${{ matrix.variant.projectKey }}
|
|
"-Dsonar.projectName=${{ matrix.variant.projectName }}"
|
|
-Dsonar.projectVersion=${{ steps.version.outputs.version }}
|
|
-Dsonar.cxx.jsonCompilationDatabase=./build-${{ matrix.variant.name }}/Debug/compile_commands.json
|
|
-Dsonar.cxx.xunit.reportPaths=build-${{ matrix.variant.name }}/Debug/TestResults/*.xml
|
|
-Dsonar.qualitygate.wait=true
|
|
${{ github.event_name == 'pull_request' &&
|
|
format('-Dsonar.pullrequest.key={0} -Dsonar.pullrequest.branch={1} -Dsonar.pullrequest.base={2} -Dsonar.analysis.sqbot={3}',
|
|
github.event.pull_request.number, github.head_ref, github.base_ref, github.event.pull_request.head.sha)
|
|
|| format('-Dsonar.branch.name={0}', github.ref_name) }}
|
|
env:
|
|
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
|
SONAR_HOST_URL: ${{ secrets.SONAR_HOST }}
|