Jenkinsfile (declarative pipeline):
pipeline {
agent any
environment {
CODECHARTER_API_KEY = credentials('codecharter-api-key')
CODECHARTER_VERSION = '1.4.0'
}
stages {
stage('Install CodeCharter') {
steps {
sh '''
curl -sSL -H "Authorization: Bearer $CODECHARTER_API_KEY" \\
-o codecharter.tar.gz \\
https://codecharter.tools/api/v1/cli/linux-x64/$CODECHARTER_VERSION
mkdir -p codecharter-bin && tar -xzf codecharter.tar.gz -C codecharter-bin
chmod +x codecharter-bin/codecharter
'''
}
}
stage('CodeCharter analyze') {
steps {
sh './codecharter-bin/codecharter analyze . --fail-on error --output sarif --output-file codecharter.sarif'
}
post {
always {
archiveArtifacts artifacts: 'codecharter.sarif', allowEmptyArchive: true
}
}
}
}
}
API-Key beschaffen
- Im Portal unter API Keys einen Key erzeugen.
- In Jenkins:
Manage Jenkins → Credentials → Add credentials, "Secret text" mit IDcodecharter-api-key. - Im Pipeline mit
credentials('codecharter-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: 'codecharter.sarif', name: 'CodeCharter')]
)
}
}
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/codecharter'
]
])
}
Self-Hosted-Agents
Standard für Jenkins. Der Agent braucht einmal Netzzugriff auf
codecharter.tools 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 .codecharter/-Konfiguration.