From 55a4e1c08958d65f80a0fa187e93dbf745eb4eeb Mon Sep 17 00:00:00 2001 From: codex Date: Tue, 21 Apr 2026 22:09:06 -0300 Subject: [PATCH] ci(soteria): run sonar and supply-chain scans --- Jenkinsfile | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/Jenkinsfile b/Jenkinsfile index 21a87d3..b54c847 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -35,6 +35,14 @@ spec: volumeMounts: - name: workspace-volume mountPath: /home/jenkins/agent + - name: quality-tools + image: registry.bstein.dev/bstein/quality-tools:sonar8.0.1-trivy0.70.0-arm64 + command: + - cat + tty: true + volumeMounts: + - name: workspace-volume + mountPath: /home/jenkins/agent volumes: - name: docker-config-writable emptyDir: {} @@ -92,6 +100,51 @@ spec: } } } + stage('Collect SonarQube and supply-chain evidence') { + steps { + container('quality-tools') { + sh '''#!/usr/bin/env bash + set -euo pipefail + mkdir -p build + args=( + "-Dsonar.host.url=${SONARQUBE_HOST_URL}" + "-Dsonar.token=${SONARQUBE_TOKEN}" + "-Dsonar.projectKey=${SONARQUBE_PROJECT_KEY}" + "-Dsonar.projectName=${SONARQUBE_PROJECT_KEY}" + "-Dsonar.sources=." + "-Dsonar.exclusions=**/.git/**,**/build/**,**/dist/**,**/node_modules/**,**/.venv/**,**/__pycache__/**,**/coverage/**,**/test-results/**,**/playwright-report/**" + "-Dsonar.test.inclusions=**/tests/**,**/testing/**,**/*_test.go,**/*.test.ts,**/*.test.tsx,**/*.spec.ts,**/*.spec.tsx" + ) + [ -f build/coverage.out ] && args+=("-Dsonar.go.coverage.reportPaths=build/coverage.out") + set +e + sonar-scanner "${args[@]}" | tee build/sonar-scanner.log + sonar_rc=${PIPESTATUS[0]} + trivy fs --no-progress --format json --output build/trivy-fs.json --scanners vuln,secret,misconfig --severity HIGH,CRITICAL . + trivy_rc=$? + set -e + printf '%s\n' "${sonar_rc}" > build/sonarqube-analysis.rc + if [ ! -s build/trivy-fs.json ]; then + cat > build/ironbank-compliance.json < build/ironbank-compliance.json + ''' + } + } + } stage('Run quality gate') { steps { container('tester') {