Zum Inhalt springen

Jenkins

AppArch hat kein Jenkins-Plugin und keine Jenkins-spezifische Vorlage. In Jenkins starten Sie den Collector-Container mit docker run - dasselbe Image wie in jeder anderen CI. Die Git-Verbindung selbst ist ein normaler Zugang (GitHub, GitLab, Bitbucket oder Azure DevOps).

Legen Sie unter Manage Jenkins → Credentials an:

  • Ein Secret text APPARCH_TOKEN - das Runner-Token des Projekts (siehe Projekt registrieren).
  • Ein Username with password apparch-hub - Benutzername = Installations-ID, Passwort = Installationsschlüssel. Damit wird das Image von hub.apparch.io gezogen; das Projekt-Token ist kein Registry-Zugang.

Der Agent braucht Docker.

pipeline {
agent any
environment {
APPARCH_TOKEN = credentials('APPARCH_TOKEN')
}
stages {
stage('AppArch') {
steps {
withCredentials([usernamePassword(credentialsId: 'apparch-hub', usernameVariable: 'HUB_USER', passwordVariable: 'HUB_KEY')]) {
sh 'echo "$HUB_KEY" | docker login hub.apparch.io -u "$HUB_USER" --password-stdin'
}
sh '''
PR_ARGS=""
if [ -n "$CHANGE_ID" ]; then
PR_ARGS="-e APPARCH_Collector__Provider__Type=gitlab \
-e APPARCH_Collector__Provider__ProjectId=group/project \
-e APPARCH_Collector__Provider__PullRequestId=$CHANGE_ID"
fi
docker run --rm -v "$WORKSPACE:/workspace:ro" \
-e APPARCH_Collector__Token="$APPARCH_TOKEN" \
-e APPARCH_Collector__ApiUrl="https://api.yourdomain.com" \
$PR_ARGS \
hub.apparch.io/collectors/dotnet:latest /workspace
'''
}
}
}
}

Jenkins stellt die Merge-Request-Variablen des Anbieters nicht bereit; der Runner kann einen PR nicht selbst erkennen. Sie übergeben den Kontext explizit:

VariableWert
APPARCH_Collector__Provider__Typegitlab, github, bitbucket oder azuredevops
APPARCH_Collector__Provider__ProjectIdDas Repository beim Anbieter, z. B. group/project
APPARCH_Collector__Provider__PullRequestIdDie PR- / MR-Nummer ($CHANGE_ID in einer Multibranch-Pipeline)

Optional: APPARCH_Collector__Provider__BaseUrl, __WebUrl, __BaseSha, __StartSha, __HeadSha, __Title, __Author.

  • Mit diesen Variablen ist der Lauf ein PR-Review (ArchPilot plus ein ArchScan-Eintrag).
  • Ohne sie ist es ein vollständiger Scan (ArchScan und ArchSecurity).

Hängen Sie --fail-on <Stufe> nach /workspace an (critical, error, warning oder info) oder setzen Sie APPARCH_FAIL_ON. Gibt es einen Befund auf oder über dieser Stufe, beendet sich der Collector nach dem Senden aller Ergebnisse mit Exit-Code 4, und Jenkins markiert die Stage als fehlgeschlagen. Ist beides nicht gesetzt, gilt die im Panel für den Workspace eingestellte Fail-on-Stufe; gibt es auch dort keine, lassen Befunde den Schritt nie fehlschlagen.

Für andere CI-Systeme: Runner in die CI einbinden.