diff --git a/Jenkinsfile b/Jenkinsfile index 054822b..07c3f25 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -31,6 +31,13 @@ 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: workspace-volume emptyDir: {} @@ -69,6 +76,28 @@ spec: stage('Collect SonarQube 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-backend.out ] && args+=("-Dsonar.go.coverage.reportPaths=build/coverage-backend.out") + [ -f build/frontend-coverage/lcov.info ] && args+=("-Dsonar.javascript.lcov.reportPaths=build/frontend-coverage/lcov.info") + set +e + sonar-scanner "${args[@]}" | tee build/sonar-scanner.log + rc=${PIPESTATUS[0]} + set -e + printf '%s\n' "${rc}" > build/sonarqube-analysis.rc + ''' + } container('publisher') { sh ''' set -eu @@ -107,6 +136,34 @@ PY stage('Collect Supply Chain evidence') { steps { + container('quality-tools') { + sh '''#!/usr/bin/env bash + set -euo pipefail + mkdir -p build + set +e + trivy fs --no-progress --format json --output build/trivy-fs.json --scanners vuln,secret,misconfig --severity HIGH,CRITICAL . + trivy_rc=$? + set -e + if [ ! -s build/trivy-fs.json ]; then + cat > build/ironbank-compliance.json < build/ironbank-compliance.json + ''' + } container('publisher') { sh ''' set -eu diff --git a/frontend/package.json b/frontend/package.json index 5f3f1d1..0616a60 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -8,7 +8,7 @@ "build": "vite build", "preview": "vite preview --port 5173", "test": "jest --runInBand", - "test:ci": "mkdir -p ../build && JEST_JUNIT_OUTPUT_FILE=../build/junit-frontend.xml jest --ci --runInBand --coverage --coverageReporters=text --coverageReporters=json-summary --coverageDirectory=../build/frontend-coverage --reporters=default --reporters=jest-junit" + "test:ci": "mkdir -p ../build && JEST_JUNIT_OUTPUT_FILE=../build/junit-frontend.xml jest --ci --runInBand --coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=json-summary --coverageDirectory=../build/frontend-coverage --reporters=default --reporters=jest-junit" }, "dependencies": { "@picocss/pico": "^2.1.1",