name: Test and SonarQube on: push: branches: [main] workflow_dispatch: permissions: contents: read jobs: quality: runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v4 with: # Full history so SonarQube can read blame data for new-code detection. fetch-depth: 0 - name: Set up Node uses: actions/setup-node@v4 with: node-version: lts/* cache: npm - name: Install dependencies run: npm ci - name: Type check run: npm run type-check - name: Lint run: npm run lint - name: Unit tests run: npm run test:unit # Laeuft nur, wenn SONAR_TOKEN als Repo-Secret gesetzt ist -- ohne das (Stand # 12.09.2026: nicht gesetzt) wuerde dieser Schritt sonst den ganzen Workflow rot # faerben, obwohl Typecheck/Lint/Tests laengst gruen sind. continue-on-error als # zweite Absicherung, falls der Scan aus einem anderen Grund fehlschlaegt (z. B. der # selbst gehostete SonarQube-Server ist gerade nicht erreichbar) -- das soll den # eigentlichen Qualitaets-Check dieses Workflows nicht mit runterreissen. - name: SonarQube scan if: ${{ secrets.SONAR_TOKEN != '' }} continue-on-error: true uses: SonarSource/sonarqube-scan-action@v8.1.0 env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} SONAR_HOST_URL: ${{ vars.SONAR_HOST_URL }} with: args: >- -Dsonar.projectKey=mARTin-B78_My-Weekly-ToDo-List_e038f066-0063-4a1e-9c33-03fdd5ab3c3a -Dsonar.sources=src,scripts -Dsonar.exclusions=**/node_modules/**,**/.next/**,**/*.spec.ts -Dsonar.qualitygate.wait=true -Dsonar.qualitygate.timeout=300