Logo GH

جنکینز و خطوط لوله CI

(بخش: تکنولوژی و زیرساخت)

خلاصه ای کوتاه

جنکینز «موتور» جهانی CI در زیرساختهای ترکیبی iGaming باقی مانده است: ادغام مونتاژ برنامه، containerization، آزمایش، اعتبار سنجی امنیتی و انتشار مصنوعی. موفقیت یک خط لوله به عنوان کد (Declarative/Multibranch)، کتابخانه های مشترک، عوامل زودگذر در Kubernetes، امنیت سخت و اسرار، مدیریت پیکربندی GitOps و معیارهای عملکرد و هزینه است.

1) معماری جنکینز برای iGaming

کنترل کننده (LTS) + عوامل: حداقل پلاگین ها در کنترل ؛ کار به نمایندگان منتقل می شود.
عوامل زودگذر: در حال اجرا در K8s/under jnlp پویا (شروع سریع، محیط تمیز).
جداسازی کار: پوشه ها/حقوق (پوشه ها + استراتژی مبتنی بر نقش)، اعتبار برای کوچکترین حقوق.
قابلیت مشاهده: صادرات معیارها (تأخیر، صف)، سیاهههای مربوط به مرحله متمرکز، شناسه ردیابی در خطوط لوله.

2) الگوهای لوله کشی: اعلانی و چند منظوره

هنگامی که اعلانی: خطوط لوله استاندارد با مراحل یکنواخت، مراحل «پست» روشن است.
هنگامی که نوشته شده است: شاخه های نادر «سفارشی».
Multibranch: خط لوله خودکار برای هر شعبه/PR ؛ فقط سیاست های شاخه فعال.

پایه اعلام خط لوله

groovy pipeline {
agent { label 'k8s' } // или agent { kubernetes {... } }
options {
timestamps()
ansiColor('xterm')
buildDiscarder(logRotator(numToKeepStr: '50'))
timeout(time: 30, unit: 'MINUTES')
disableConcurrentBuilds()
}
environment {
REGISTRY = 'registry. example. com'
IMAGE  = "${env. REGISTRY}/payments:${env. GIT_COMMIT}"
}
stages {
stage('Checkout') {
steps { checkout(scm) }
}
stage('Lint & Unit') {
parallel {
stage('Lint') { steps { sh 'make lint' } }
stage('Unit') { steps { sh 'make test' } }
}
}
stage('SCA/SAST') {
steps {
sh'make deps_audit'//SCA (dependencies)
sh'make sast '//static analysis
}
}
stage('Build Image') {
steps { sh 'docker build -t $IMAGE. && docker push $IMAGE' }
}
stage('SBOM & Sign') {
steps {
sh 'syft $IMAGE -o spdx-json > sbom. json'
sh 'cosign sign --key $COSIGN_KEY $IMAGE'
archiveArtifacts artifacts: 'sbom. json', fingerprint: true
}
}
}
post {
success { echo '+ Build OK' }
failure { echo '- Build failed'; sh 'printenv      sort      sed -n "1,50p"' }
always { cleanWs() }
}
}

3) Kubernetes عوامل و محیط ظرف

نمونه podTemplate (اعلانی)

groovy pipeline {
agent {
kubernetes {
yaml """apiVersion: v1 kind: Pod spec:
serviceAccountName: jenkins containers:
- name: build image: docker:27-dind securityContext: { privileged: true }
- name: tools image: alpine:3. 20 command: ['cat']
tty: true
"""
defaultContainer 'tools'
}
}
stages {
stage('Build in DinD') {
steps {
container('build') {
sh '''
dockerd-entrypoint. sh & sleep 5 docker build -t $IMAGE.
docker push $IMAGE
'''
}
}
}
}
}

تمرین: کش لایه از طریق مشترک 'emptyDir '/کش از راه دور ؛ پردازنده/RAM ؛ 'nodeSelector/tains' محدودیت برای جدا کردن مجموعه های سنگین.

4) کتابخانه های مشترک: استانداردهای خشک و یکنواخت

مراحل مشترک (linters، SAST، مونتاژ، چاپ و نشر) را در کتابخانه به اشتراک بگذارید.

groovy
// vars/withQuality. groovy def call(Closure body) {
stage('Quality Gate') {
parallel(
"Lint": { sh 'make lint' },
"Unit": { sh 'make test' },
"SCA": { sh 'make deps_audit' }
)
}
body()
}
استفاده:
groovy
@Library('ci-lib@v3') _
pipeline {
agent any stages {
stage('Pipeline') {
steps {
withQuality {
sh 'make build'
}
}
}
}
}

نکات: نسخه کتابخانه ('برچسب ها')، پوشش با تست واحد مراحل، نگه داشتن CHANGELOG.

5) اسرار و اعتبار

اعتبار اتصال: 'نام کاربری', 'رشته', 'فایل', 'sshUserPrivateKey'.
حوزه های مخفی: حداقل حقوق ؛ فقط در مراحل مناسب استفاده کنید.
مدیران مخفی: ارائه دهندگان مخازن خارجی (KMS/Secrets Manager/HashiCorp Vault).

groovy withCredentials([string(credentialsId: 'cosign-key', variable: 'COSIGN_KEY')]) {
sh 'cosign sign --key $COSIGN_KEY $IMAGE'
}

6) همزمانی، ماتریس، کش

ماتریس مجموعه ها

groovy stage('Test Matrix') {
matrix {
axes {
axis { name 'PY'; values '3. 10', '3. 12' }
axis { name 'DB'; values 'mysql', 'postgres' }
}
stages {
stage('Run') { steps { sh 'pytest -q' } }
}
post { always { junit 'reports/.xml' } }
}
}

Caching: Docker layer cache, dependency cache ('~/.m2', '~/.cache/pip') on volume; مصنوعات بین مراحل - از طریق «ذخیره/unstash» یا ذخیره سازی مصنوعی.

7) بررسی ایمنی و انطباق

SCA/SAST/اسکن مخفی در CI، DAST در یک محیط جداگانه.
SBOM (Syft/CycloneDX)، امضای مصنوعی (cosign)، سیاست unsigned-no deploy.

دروازه های سیاست: متوقف کردن خط لوله برای CVE های بحرانی ؛ گزارش در روابط عمومی

خطوط PII: اسرار را وارد نکنید، متغیرهای ماسک، عوامل جداگانه برای مجامع حساس.

8) انتشار مصنوعات و ادغام CD

رجیستری: Docker/OCI با سیاست حفظ، برچسب های ایمنی.
بسته بندی مخازن: MAVEN/NPM/پروکسی PyPI + کش.
CD triggers: ارسال رویدادها به Argo CD/Flagger یا ایجاد PR در مخزن آشکار GitOps.

9) پیکربندی جنکینز به عنوان کد (JCasC) и GitOps

پیکربندی کنترل کننده را به عنوان کد نگه دارید: شغل قالب، اعتبار (لینک)، RBAC، عوامل.

yaml jenkins:
systemMessage: "Jenkins (iGaming CI)"
numExecutors: 0 authorizationStrategy:
roleBased:
roles:
global:
- name: "readers"
pattern: "."
permissions: ["Overall/Read"]
nodes:
- permanent:
name: "edge-builder"
remoteFS: "/home/jenkins"
labels: "docker"
unclassified:
location:
url: "https://ci. example. com/"
credentials:
system:
domainCredentials:
- credentials:
- string:
id: "cosign-key"
description: "Cosign key ref"
secret: "${COSIGN_KEY_FROM_ENV}"

تمرین: پیکربندی - در Git، بررسی PR، dev → مرحله → prod promotion ؛ اسرار - از طریق متغیرها/مدیران خارجی.

10) قابلیت مشاهده، قابلیت اطمینان و هزینه

معیارها: صف، مدت زمان مراحل، درصد راه اندازی مجدد، توان عملیاتی عوامل.
خرابی: 'دوباره', 'timeout', 'پایدار' مارک از آزمون پوسته پوسته شدن, اطلاعیه ها در ChatOps.
FinOps: خاموش کردن خودکار عوامل بیکار، محدودیت های مونتاژ همزمان، مقادیر پوشه/فرمان.

11) خطوط لوله برای وظایف مختلف

باطن/سرویس وب

Lint/Units → SAST/SCA → Build → SBOM/Sign → Publish → (CD trigger).

داده ها/ETL

dbt test → تولید مصنوعات → تجزیه و تحلیل SQL استاتیک → انتشار مدل ها و اسناد.

ML/LLM

تایید داده ها/مجوز → آموزش در عوامل نقطه → صادرات ONNX/TensorRT → تست های perf (تاخیر/نشانه ها/s) → امضای مدل و انتشار.

12) Runabooks (حوادث معمول)

صف در حال رشد است: اضافه کردن عوامل، چک «معلق» خطوط لوله، محدودیت همزمانی.
مجامع شناور: نسخه ضربه از ابزار در ظرف عامل ؛ فضای کاری مشترک را غیرفعال کنید.

راز «نشت» به سیاهههای مربوط: حذف سیاهههای مربوط ساخت، جایگزین اعتبار، انجام ممیزی ؛ ماسک اضافه کنید

افت کنترل: بازیابی از پشتیبان گیری JCasC + job/plugin storage versioned.

13) چک لیست پیاده سازی

1. جنکینز LTS با حداقل مجموعه ای از پلاگین ها ؛ هر چیز دیگری در ماموران است.
2. عوامل K8s زودگذر، محدودیت منابع، حافظه پنهان لایه.
3. Declarative/Multibranch, PR validation, «post {always {cleanWs ()}».
4. کتابخانههای اشتراکی با نسخهبندی مراحل کیفیت/ایمنی یکنواخت.
5. اعتبار نامه ها + اسرار خارجی ؛ حداقل محدوده.
6. SCA/SAST/Secret-scan/DAST، SBOM و امضای تصویر.

7. مدیریت پیکربندی JCasC و GitOps ؛ بررسی روابط عمومی از تغییرات

8. معیارها/هشدارها/ChatOps ؛ عقب نشینی/زمان بندی ؛ مصنوعات و مجلات.
9. سیاست های ذخیره سازی/نگهداری، خودکار بهداشت فضاهای کاری.
10. کتاب های مستند و روزهای بازی منظم.

14) ضد گلوله

کنترل کننده «مانند سرور همه چیز»: مجامع سنگین و پلاگین ها بر روی آن.
شغل اسکریپت بدون نسخه و بررسی کد.

مخلوط کردن اسرار و سیاهههای مربوط ؛ وام با حقوق گسترده

عوامل هستند چند/آنها ثابت → محیط رانش، آزمون پوسته پوسته شدن.
عدم وجود SBOM/امضای مصنوعات و دروازه ها توسط CVE.
«دستی» کنترل پیکربندی، بدون JCasC/GitOps.

خلاصه

جنکینز یک هسته قدرتمند و انعطاف پذیر CI است. با ترجمه پیکربندی به کد (JCasC)، مراحل استاندارد سازی در کتابخانه های به اشتراک گذاشته شده، در حال اجرا بر روی عوامل K8s کوتاه مدت و تعبیه امنیت/امضا/SBOM به طور مستقیم به خط لوله، شما می توانید نسخه های قابل پیش بینی، هزینه کنترل شده و انعطاف پذیری بار iGaming را دریافت کنید.

Contact

با ما در تماس باشید

برای هرگونه سؤال یا نیاز به پشتیبانی با ما ارتباط بگیرید.ما همیشه آماده کمک هستیم!

شروع یکپارچه‌سازی

ایمیل — اجباری است. تلگرام یا واتساپ — اختیاری.

نام شما اختیاری
ایمیل اختیاری
موضوع اختیاری
پیام اختیاری
Telegram اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

با فشردن این دکمه، با پردازش داده‌های خود موافقت می‌کنید.