İçeriğe geç

Jenkins

AppArch’ın Jenkins eklentisi veya Jenkins’e özel bir şablonu yoktur. Jenkins’te collector container’ını docker run ile çalıştırırsınız; diğer tüm CI’larda kullanılan imajın aynısı. Git bağlantısı ise normal bir kimlik bilgisidir (GitHub, GitLab, Bitbucket veya Azure DevOps).

Manage Jenkins → Credentials altında şunları oluşturun:

  • Secret text türünde APPARCH_TOKEN - projenin runner token’ı (bkz. Proje kaydetme).
  • Username with password türünde apparch-hub - kullanıcı adı = kurulum kimliği, parola = kurulum anahtarı. İmajı hub.apparch.io’dan bu çeker; proje token’ı bir registry kimlik bilgisi değildir.

Agent’ta Docker bulunmalıdır.

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, sağlayıcının merge request değişkenlerini sunmaz; runner PR’ı kendiliğinden tanıyamaz. Bağlamı açıkça verirsiniz:

DeğişkenDeğer
APPARCH_Collector__Provider__Typegitlab, github, bitbucket veya azuredevops
APPARCH_Collector__Provider__ProjectIdSağlayıcıdaki depo, ör. group/project
APPARCH_Collector__Provider__PullRequestIdPR / MR numarası (multibranch pipeline’da $CHANGE_ID)

İsteğe bağlı: APPARCH_Collector__Provider__BaseUrl, __WebUrl, __BaseSha, __StartSha, __HeadSha, __Title, __Author.

  • Bu değişkenlerle çalışma bir PR incelemesidir (ArchPilot ve bir ArchScan kaydı).
  • Bunlar olmadan tam taramadır (ArchScan ve ArchSecurity).

/workspace sonrasına --fail-on <seviye> ekleyin (critical, error, warning veya info) ya da APPARCH_FAIL_ON tanımlayın. O seviyede veya üstünde bulgu varsa collector tüm sonuçları gönderdikten sonra 4 çıkış koduyla biter ve Jenkins aşamayı başarısız sayar. İkisi de yoksa panelde çalışma alanı için ayarlanan fail-on seviyesi uygulanır; orada da yoksa bulgular aşamayı hiç kırmaz.

Diğer CI sistemleri için: Runner’ı CI’a ekleme.