This repository has been archived by the owner on Sep 23, 2024. It is now read-only.
Merge branch 'master' of github.com:symless/synergy-core #16
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: "SonarCloud Analysis" | |
on: | |
workflow_dispatch: | |
pull_request: | |
types: | |
- opened | |
- reopened | |
- synchronize | |
- ready_for_review | |
push: | |
branches: [master] | |
jobs: | |
sonarcloud-analysis: | |
if: ${{ vars.SONAR_SCANNER_ENABLED }} | |
runs-on: ubuntu-24.04-32-core-x64 | |
container: symless/synergy-core:ubuntu-22.04-amd64 | |
timeout-minutes: 20 | |
env: | |
SONAR_SCANNER_VERSION: 6.1.0.4477 | |
SONAR_SCANNER_OPTS: -server | |
SONAR_SCANNER_URL_BASE: https://binaries.sonarsource.com/Distribution/sonar-scanner-cli | |
CPU_CORE_COUNT: 32 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
submodules: "recursive" | |
# Fetch all history for SonarScanner blame data | |
fetch-depth: 0 | |
- name: Config Git safe dir | |
run: git config --global --add safe.directory $GITHUB_WORKSPACE | |
- name: Install dependencies | |
run: | | |
./scripts/install_deps.py --ci-env && | |
apt install curl unzip -y && | |
pip install gcovr | |
- name: Install SonarScanner | |
run: | | |
export SONAR_SCANNER_HOME=$HOME/.sonar/sonar-scanner-$SONAR_SCANNER_VERSION-linux-x64 | |
curl --create-dirs -sSLo $HOME/.sonar/sonar-scanner.zip \ | |
$SONAR_SCANNER_URL_BASE/sonar-scanner-cli-$SONAR_SCANNER_VERSION-linux-x64.zip | |
unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/ | |
- name: Install build-wrapper | |
run: | | |
file="build-wrapper-linux-x86.zip" | |
url="https://sonarcloud.io/static/cpp/$file" | |
curl --create-dirs -sSLo $HOME/.sonar/$file $url | |
unzip -o $HOME/.sonar/$file -d $HOME/.sonar/ | |
- name: Configure | |
run: cmake -B build --preset=linux-debug -DENABLE_COVERAGE=ON | |
- name: Build | |
run: | | |
export PATH=$HOME/.sonar/build-wrapper-linux-x86:$PATH | |
build-wrapper-linux-x86-64 --out-dir bw-output cmake --build build -j${CPU_CORE_COUNT} | |
- name: Unit tests coverage | |
env: | |
QT_QPA_PLATFORM: offscreen | |
run: cmake --build build --target coverage-unittests | |
- name: Integration tests coverage | |
env: | |
QT_QPA_PLATFORM: offscreen | |
run: | | |
cmake --build build --target coverage-integtests | |
result=$? | |
if [ $result -ne 0 ]; then | |
echo "::warning ::Integration tests failed with code: $result" | |
fi | |
continue-on-error: true | |
- name: Get coverage report paths | |
id: coverage-paths | |
run: | | |
unittests=$(find build -name coverage-unittests.xml) | |
integtests=$(find build -name coverage-integtests.xml) | |
paths="${unittests}${integtests:+,$integtests}" | |
if [ -z "$paths" ]; then | |
echo "Error: No coverage files found" | |
exit 1 | |
fi | |
echo "csv=$paths" >> $GITHUB_OUTPUT | |
- name: Run SonarScanner | |
run: | | |
export PATH=$HOME/.sonar/sonar-scanner-$SONAR_SCANNER_VERSION-linux-x64/bin:$PATH | |
sonar-scanner \ | |
-Dsonar.organization=symless \ | |
-Dsonar.projectKey=symless_synergy-core \ | |
-Dsonar.sources=scripts,src/cmd,src/gui,src/lib \ | |
-Dsonar.tests=src/test \ | |
-Dsonar.exclusions=ext/**,build/** \ | |
-Dsonar.coverage.exclusions=ext/**,scripts/**,src/test/** \ | |
-Dsonar.cpd.exclusions=**/*Test*.cpp \ | |
-Dsonar.host.url=https://sonarcloud.io \ | |
-Dsonar.coverageReportPaths=${{ steps.coverage-paths.outputs.csv }} \ | |
-Dsonar.cfamily.compile-commands=build/compile_commands.json \ | |
-Dsonar.cfamily.threads=${{ env.CPU_CORE_COUNT }} \ | |
-Dsonar.python.version=3.10 | |
env: | |
SONAR_TOKEN: ${{secrets.SONAR_TOKEN}} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |