80 lines
2.5 KiB
YAML
80 lines
2.5 KiB
YAML
name: sonarcloud scan
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
- dev
|
|
pull_request:
|
|
types: [opened, synchronize, reopened]
|
|
jobs:
|
|
build:
|
|
name: sonarcloud scan
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
CONAN_SYSREQUIRES_MODE: "enabled"
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Install sonar-scanner and build-wrapper
|
|
uses: sonarsource/sonarcloud-github-c-cpp@v1
|
|
id: sonarscan
|
|
|
|
- name: Download and set up sonar-scanner
|
|
run: |
|
|
wget -nv https://cdn.anotherfoxguy.com/sonar-scanner/mofilereader -O run-sonar-scanner
|
|
sudo chmod 777 run-sonar-scanner
|
|
|
|
- name: Prepare cfamily cache timestamp
|
|
id: cfamily_cache_timestamp
|
|
shell: cmake -P {0}
|
|
run: |
|
|
string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
|
|
message("::set-output name=timestamp::${current_date}")
|
|
|
|
- name: cfamily cache files
|
|
uses: actions/cache@v3.2.5
|
|
with:
|
|
path: cfamily-cache
|
|
key: cfamily-cache-${{ steps.cfamily_cache_timestamp.outputs.timestamp }}
|
|
restore-keys: |
|
|
cfamily-cache-
|
|
|
|
- name: Cache conan
|
|
uses: actions/cache@v3.2.5
|
|
with:
|
|
key: conan-linux-${{ hashFiles('conanfile.txt') }}
|
|
path: ~/.conan/
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
curl "https://raw.githubusercontent.com/AnotherFoxGuy/ci-scripts/main/install-cmake.sh" | sudo bash
|
|
curl "https://raw.githubusercontent.com/AnotherFoxGuy/ci-scripts/main/install-conan.sh" | sudo bash
|
|
|
|
- name: Configure
|
|
run: |
|
|
conan profile new --detect --force default
|
|
conan profile update conf.tools.cmake.cmaketoolchain:generator="Ninja" default
|
|
conan profile update settings.compiler.libcxx=libstdc++11 default
|
|
conan install . -s build_type=Release -b missing -pr:b=default
|
|
cmake . -DCMAKE_BUILD_TYPE=Release -DBUILD_TEST=ON -DENABLE_COVERAGE=ON -DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake"
|
|
|
|
- name: Run build-wrapper
|
|
run: build-wrapper-linux-x86-64 --out-dir bw-output make -j4
|
|
|
|
- name: Test
|
|
continue-on-error: true
|
|
run: ctest -j2 --output-on-failure
|
|
|
|
- name: Generate coverage
|
|
run: make gcov
|
|
|
|
- name: Run sonar-scanner
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
SONAR_SCANNER_EXE: ${{ steps.sonarscan.outputs.sonar-scanner-binary }}
|
|
run: ./run-sonar-scanner
|
|
|
|
- name: Clean Conan pkgs
|
|
run: conan remove "*" -fsb |