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).
Jenkins kimlik bilgileri
Bölüm başlığı “Jenkins kimlik bilgileri”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
Bölüm başlığı “Pipeline”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 ''' } } }}PR incelemesi ve tam tarama
Bölüm başlığı “PR incelemesi ve tam tarama”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şken | Değer |
|---|---|
APPARCH_Collector__Provider__Type | gitlab, github, bitbucket veya azuredevops |
APPARCH_Collector__Provider__ProjectId | Sağlayıcıdaki depo, ör. group/project |
APPARCH_Collector__Provider__PullRequestId | PR / 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).
Derlemeyi kırmak
Bölüm başlığı “Derlemeyi kırmak”/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.