diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 74503be..0f9b253 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -51,3 +51,30 @@ jobs: run: pnpm run validate:architecture - name: Check schema/contracts and provenance policy run: pnpm --filter @siax/c0py-core test + sonar: + # SonarQube Community Build har inget separat PR-analysläge (en enda "main"-gren + # per projekt) — en analys från en PR-branch eller en tagg-push som inte pekar på + # main skulle skriva över kvalitetshistoriken. Kör därför bara + # vid push till main. + if: github.event_name == 'push' && github.ref == 'refs/heads/main' + runs-on: ubuntu-latest + timeout-minutes: 20 + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: SonarQube analysis (self-hosted sonar.siax.io) + env: + SONAR_HOST_URL: https://sonar.siax.io + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + run: | + set -euo pipefail + test -n "$SONAR_TOKEN" || { echo "::error::SONAR_TOKEN repo secret missing"; exit 1; } + # Jobbet kör i en container på act_runner; "docker run -v \"$PWD:...\"" + # skulle montera VÄRDENS (tomma) sökväg. Kopiera in källträdet istället. + cid=$(docker create -e SONAR_HOST_URL -e SONAR_TOKEN -w /usr/src \ + sonarsource/sonar-scanner-cli:latest \ + sonar-scanner -Dsonar.projectKey=c0py -Dsonar.host.url="$SONAR_HOST_URL") + trap 'docker rm -f "$cid" >/dev/null 2>&1 || true' EXIT + docker cp . "$cid":/usr/src + docker start -a "$cid" diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 0000000..b2ffde3 --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,5 @@ +sonar.projectKey=c0py +sonar.host.url=https://sonar.siax.io +sonar.sources=apps/api/src,apps/web/src,packages/c0py-core/src,packages/config/src,packages/types/src +sonar.tests=apps/api/tests,apps/web/tests,packages/c0py-core/tests,packages/config/tests,packages/types/tests +sonar.exclusions=**/node_modules/**,**/dist/**,**/build/**,**/.next/**,**/coverage/**,**/__pycache__/**,**/*.min.js