Aller au contenu

Jenkins

AppArch n’a ni plugin Jenkins ni modèle propre à Jenkins. Sur Jenkins, vous lancez le conteneur du collector avec docker run - la même image que sur toute autre CI. La connexion Git elle-même est un identifiant normal (GitHub, GitLab, Bitbucket ou Azure DevOps).

Sous Manage Jenkins → Credentials, créez :

  • Un Secret text APPARCH_TOKEN - le jeton runner du projet (voir Enregistrer un projet).
  • Un Username with password apparch-hub - nom d’utilisateur = identifiant de l’installation, mot de passe = clé de l’installation. C’est lui qui tire l’image depuis hub.apparch.io ; le jeton de projet n’est pas un identifiant de registre.

L’agent a besoin de 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 n’expose pas les variables de merge request du fournisseur ; le runner ne peut pas détecter une PR seul. Vous transmettez le contexte explicitement :

VariableValeur
APPARCH_Collector__Provider__Typegitlab, github, bitbucket ou azuredevops
APPARCH_Collector__Provider__ProjectIdLe dépôt chez le fournisseur, par ex. group/project
APPARCH_Collector__Provider__PullRequestIdLe numéro de PR / MR ($CHANGE_ID dans un pipeline multibranche)

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

  • Avec ces variables, l’exécution est une revue de PR (ArchPilot plus un enregistrement ArchScan).
  • Sans elles, c’est une analyse complète (ArchScan et ArchSecurity).

Ajoutez --fail-on <niveau> après /workspace (critical, error, warning ou info), ou définissez APPARCH_FAIL_ON. S’il existe un constat à ce niveau ou au-dessus, le collector se termine avec le code 4 après l’envoi de tous les résultats, et Jenkins marque l’étape en échec. Si aucun des deux n’est défini, le niveau fail-on configuré dans le panneau pour l’espace de travail s’applique ; s’il n’y en a pas non plus, les constats ne font jamais échouer l’étape.

Pour les autres systèmes de CI : Ajouter le runner à la CI.