From 2d2d91b38b4493bf083a2bef14607f01a3539b75 Mon Sep 17 00:00:00 2001 From: Sebastian Dine Date: Sat, 9 May 2026 14:31:36 +0200 Subject: [PATCH] patch: sonarqube (#2) * sonarqube * sonarqube --------- Co-authored-by: sdine --- .github/workflows/feature-ci.yml | 42 ++++++++++++++++++++++++++++ .github/workflows/master-ci.yml | 47 +++++++++++++++++++++++++++++++- README.md | 2 ++ 3 files changed, 90 insertions(+), 1 deletion(-) diff --git a/.github/workflows/feature-ci.yml b/.github/workflows/feature-ci.yml index 3f265bc..2da0cd0 100644 --- a/.github/workflows/feature-ci.yml +++ b/.github/workflows/feature-ci.yml @@ -9,6 +9,48 @@ permissions: contents: read jobs: + sonarqube: + name: SonarQube Cloud scan + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Compute Sonar project key + run: echo "SONAR_PROJECT_KEY=${GITHUB_REPOSITORY/\//_}" >> "$GITHUB_ENV" + + - name: Install scan prerequisites + run: > + sudo apt-get update && + sudo apt-get install -y + cmake + ninja-build + pkg-config + libgtk-3-dev + libwxgtk3.2-dev + + - name: Generate compile commands + run: > + cmake -S . -B build -G Ninja + -DCCM_BUILD_TESTS=OFF + -DCCM_USE_SYSTEM_WX=ON + -DCMAKE_EXPORT_COMPILE_COMMANDS=ON + + - name: SonarQube Cloud scan + uses: SonarSource/sonarqube-scan-action@v5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + with: + args: > + -Dsonar.host.url=https://sonarcloud.io + -Dsonar.organization=${{ github.repository_owner }} + -Dsonar.projectKey=${{ env.SONAR_PROJECT_KEY }} + -Dsonar.sources=core,ui_wx,app + -Dsonar.cfamily.compile-commands=build/compile_commands.json + linux: name: Linux build + tests uses: ./.github/workflows/feature-linux.yml diff --git a/.github/workflows/master-ci.yml b/.github/workflows/master-ci.yml index 04afe0d..1e3b511 100644 --- a/.github/workflows/master-ci.yml +++ b/.github/workflows/master-ci.yml @@ -11,6 +11,49 @@ permissions: contents: write jobs: + sonarqube: + name: SonarQube Cloud scan + if: github.event.pull_request.merged == true + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Compute Sonar project key + run: echo "SONAR_PROJECT_KEY=${GITHUB_REPOSITORY/\//_}" >> "$GITHUB_ENV" + + - name: Install scan prerequisites + run: > + sudo apt-get update && + sudo apt-get install -y + cmake + ninja-build + pkg-config + libgtk-3-dev + libwxgtk3.2-dev + + - name: Generate compile commands + run: > + cmake -S . -B build -G Ninja + -DCCM_BUILD_TESTS=OFF + -DCCM_USE_SYSTEM_WX=ON + -DCMAKE_EXPORT_COMPILE_COMMANDS=ON + + - name: SonarQube Cloud scan + uses: SonarSource/sonarqube-scan-action@v5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + with: + args: > + -Dsonar.host.url=https://sonarcloud.io + -Dsonar.organization=${{ github.repository_owner }} + -Dsonar.projectKey=${{ env.SONAR_PROJECT_KEY }} + -Dsonar.sources=core,ui_wx,app + -Dsonar.cfamily.compile-commands=build/compile_commands.json + compute-version: name: Determine semantic version if: github.event.pull_request.merged == true @@ -30,7 +73,9 @@ jobs: build-windows: name: Windows build + tests - needs: compute-version + needs: + - sonarqube + - compute-version uses: ./.github/workflows/master-windows.yml with: version: ${{ needs.compute-version.outputs.version }} diff --git a/README.md b/README.md index 171e772..e0e99f9 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Card Collection Manager 3 +[![SonarCloud Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=sebastiandine_Card-Collection-Manager-3&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=sebastiandine_Card-Collection-Manager-3) + Card Collection Manager 3 is an extensible desktop application for managing trading card game collections. It is designed as a practical way to track cards and manage per-card images for large collections, with local per-game data, set synchronization workflows, and a desktop-first UX. The app preserves the established JSON layout from earlier CCM versions so existing collections stay compatible. ## Screenshots