تخطَّ إلى المحتوى

Jenkins

لا يملك AppArch إضافة (plugin) لـ Jenkins ولا قالبًا خاصًا به. في Jenkins تشغّل حاوية الـ collector عبر docker run - الصورة نفسها المستخدمة في أي CI آخر. أما اتصال Git نفسه فهو بيانات اعتماد عادية (GitHub أو GitLab أو Bitbucket أو Azure DevOps).

من Manage Jenkins ← Credentials أنشئ:

  • Secret text باسم APPARCH_TOKEN - رمز الـ runner للمشروع (راجع تسجيل مشروع).
  • Username with password باسم apparch-hub - اسم المستخدم = معرّف التثبيت، وكلمة المرور = مفتاح التثبيت. هذا ما يسحب الصورة من hub.apparch.io؛ فرمز المشروع ليس بيانات اعتماد للسجلّ.

يحتاج الـ agent إلى 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
'''
}
}
}
}

مراجعة طلب السحب أم فحص كامل

Section titled “مراجعة طلب السحب أم فحص كامل”

لا يعرض Jenkins متغيّرات طلب الدمج الخاصة بالمزوّد؛ فلا يستطيع الـ runner اكتشاف طلب السحب وحده. تمرّر السياق صراحةً:

المتغيّرالقيمة
APPARCH_Collector__Provider__Typegitlab أو github أو bitbucket أو azuredevops
APPARCH_Collector__Provider__ProjectIdالمستودع لدى المزوّد، مثل group/project
APPARCH_Collector__Provider__PullRequestIdرقم PR / MR ($CHANGE_ID في خط أنابيب multibranch)

اختياري: APPARCH_Collector__Provider__BaseUrl، __WebUrl، __BaseSha، __StartSha، __HeadSha، __Title، __Author.

  • مع هذه المتغيّرات يكون التشغيل مراجعة لطلب السحب (ArchPilot وسجلّ ArchScan).
  • ودونها يكون فحصًا كاملًا (ArchScan وArchSecurity).

أضِف --fail-on <المستوى> بعد /workspace (critical أو error أو warning أو info)، أو اضبط APPARCH_FAIL_ON. إذا وُجدت نتيجة بهذا المستوى أو أعلى، ينتهي الـ collector برمز الخروج 4 بعد إرسال كل النتائج، ويَسِم Jenkins المرحلة بالفشل. وإذا لم يُضبط أيٌّ منهما، يُطبَّق مستوى fail-on المضبوط في اللوحة لمساحة العمل؛ وإن لم يوجد هناك أيضًا فلا تُفشل النتائج الخطوة أبدًا.

لأنظمة CI الأخرى: إضافة الـ runner إلى CI.