Jenkins
Jenkinsfile (declarative pipeline):
pipeline {
agent any
environment {
CODEGUARD_API_KEY = credentials('codeguard-api-key')
CODEGUARD_VERSION = '1.4.0'
}
stages {
stage('Install CodeGuard') {
steps {
sh '''
curl -sSL -H "Authorization: Bearer $CODEGUARD_API_KEY" \\
-o codeguard.zip \\
https://codeguard.bochmann-software.com/api/v1/cli/$CODEGUARD_VERSION/linux-x64
unzip -q codeguard.zip -d codeguard-bin
chmod +x codeguard-bin/codeguard
'''
}
}
stage('CodeGuard analyze') {
steps {
sh './codeguard-bin/codeguard analyze . --fail-on error --output sarif --output-file codeguard.sarif'
}
post {
always {
archiveArtifacts artifacts: 'codeguard.sarif', allowEmptyArchive: true
}
}
}
}
}
API-Key beschaffen
- Im Portal unter API Keys einen Key erzeugen.
- In Jenkins:
Manage Jenkins → Credentials → Add credentials, "Secret text" mit IDcodeguard-api-key. - Im Pipeline mit
credentials('codeguard-api-key')referenzieren wie oben.
Warnings Next Generation Plugin
Wenn ihr das Warnings NG Plugin installiert habt, könnt ihr SARIF direkt anzeigen lassen:
post {
always {
recordIssues(
tools: [sarif(pattern: 'codeguard.sarif', name: 'CodeGuard')]
)
}
}
Damit landen Findings im Build-Overview, im Trend-Chart und auf den PR-Seiten (wenn ihr ein Bitbucket-/GitHub-Plugin habt).
Caching
Mit dem Job Cacher Plugin:
options {
cache(maxCacheSize: 200, caches: [
[
$class: 'ArbitraryFileCache',
path: '~/.cache/codeguard'
]
])
}
Self-Hosted-Agents
Standard für Jenkins. Der Agent braucht einmal Netzzugriff auf
codeguard.bochmann-software.com oder ihr legt das Binary direkt
auf den Agent.
Multi-Branch-Pipelines
Funktioniert ohne Anpassungen. Jeder Branch baut sich seine Findings
gegen den eigenen Stand der .codeguard/-Konfiguration.