GH GambleHub

Jenkins և www.plins CI

(Բաժին ՝ Տեխնոլոգիաներ և ենթակառուցվածքներ)

Live ռեզյումե

Jenkins-ը մնում է CI-ի համընդհանուր «շարժիչ» iGaming-ի հիբրիդային ենթակառուցվածքներում. Այն միավորում է ծրագրերի հավաքումը, տարանջատումը, թեստերը, անվտանգության ստուգումը և արտեֆակտների հրապարակումը։ Հաջողությունը փոխակրիչ է որպես կոորդինատոր (Declarative/Multibranch), Shared Libraries, efemerics Kubernetes, կոշտ անվտանգություն և գաղտնիքներ, GitOps քրոնգի կառավարումը, ինչպես նաև արտադրողականության և արժեքի չափումները։

1) Jenkins ճարտարապետությունը iGaming-ի տակ

Syller (LMS) + 108: Նվազագույն plagins վերահսկողի վրա; աշխատանքը հետաձգվում է։

Էֆեմերական կոմպոզիցիաները 'K8s/դինամիկ «jnlp» (արագ մեկնարկը, մաքուր միջավայրերը)։

Աշխատանքի մեկուսացումը 'թղթապանակներ/իրավունքները (Folders + Role-Based Strategy), ամենափոքր իրավունքները։

Observability: մեթրիկի արտահանումը (latency, հերթ), կենտրոնացված քայլերի լոգները, trais-ID-ը դելֆիններում։

2) Pattern plins: Declarative և Multibranch

Երբ Declarative: ռուսական փոխակրիչները միատարր քայլերով, պարզ «post» -շագի։

Երբ Scripted: հազվագյուտ «ոչ ստանդարտ» ճյուղեր։

Multibranch: Auto-interpline յուրաքանչյուր ճյուղի համար/PR; «Քաղաքական գործիչները միայն ակտիվ ճյուղեր են»։

Հիմնական Declarative-pline pline

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-international-ը և բեռնարկղային տարածքները

PodTemplate (Declarative)

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 '/remote cache; CPU/RAM; «nodeDirector/tainment» - ը ծանր հավաքման բաժանման համար։

4) Shared Libraries: DRY և միասնական ստանդարտներ

Ընդհանուր քայլեր կատարեք (ոսպնյակներ, SFC, հավաքածու, հրատարակություն) Shared Library-ում։

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'
}
}
}
}
}

Խորհուրդ տվեք, որ տարբերեք գրադարանը («tags»), ծածկեք unit թեստերը, վարեք CHANGELOG-ը։

5) Գաղտնիքները և տվյալները

Credentials Binding: `usernamePassword`, `string`, `file`, `sshUserPrivateKey`.

Secret scopes: Նվազագույն իրավունքները; օգտագործումը միայն անհրաժեշտ փուլերում է։

Գաղտնիքների ղեկավարները 'պրովայդերներ արտաքին պահեստների համար (KFC/Secrets System/HashiProp Vance)։

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

6) Զուգահեռ, մատրիցա, քաշ

Matrix-հավաքածուներ

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' } }
}
}

Քեշինգը 'Docker layer cache, կախվածության կաշ («07/.m2», «07/.cache/pip») volume; փուլերի միջև արտեֆակտները '«stash/unstash» կամ արտեֆակտային պահեստում։

7) Անվտանգության ստուգումները և համապատասխանությունը

SCA/SOM/Secret-scan CI, DMS առանձին միջավայրում։

SBSA (Winft/Cyclance DX), արտեֆակտների ստորագրությունը (cosport), քաղաքականությունը «առանց ստորագրության, ոչ մի ապացույց»։

Policy-gates: Policy-ի կանգառը կրիտիկական CVE-ում; զեկույցներ PR-ում։

PII-ի ուրվագծերը 'մի տրամաբանեք գաղտնիքները, դիմահարդարեք բջիջները, որոշակի բաղադրիչներ զգայուն խնայողությունների համար։

8) Արտեֆակտների հրատարակումը և ինտեգրումը CD-ի հետ

Registry: Docker/OCI-ը վերթենշն քաղաքականությամբ, immutability թեգերով։

Package Repos: Maven/NPM/PyPI proxy+cache.

CD ձգիչներ 'իրադարձությունների ուղարկումը Argo CD/Flagger-ում, կամ PR-ի ստեղծումը GitOps-ում։

9) Jenkins Configuration as Code (JCasC) и GitOps

Պահեք www.g. որպես կոդ ՝ ջոբի ձևանմուշ, քրեդենշլի (աքսեսուարներ), RBAC, 2019։

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-revew-ում, dev-stage-ում։ գաղտնիքները արտաքին կառավարիչների միջոցով են։

10) Դիտարկումը, վճարումը և արժեքը

Մետրիկները 'հերթը, փուլերի տևողությունը, վերագործարկումների տոկոսը, գործակալների կարողությունը։

Մերժումներ ՝ «retry», «timeout», «stable» - flaky թեստերի պիտակավորում, ChatOps-ում ծանուցումներ։

FinOps: Պարզ գործակալների մեքենա-անջատումը, զուգահեռ հավաքման սահմանները, հայրերի/հրամանների քվոտաները։

11) Դելպլայնները տարբեր առաջադրանքների համար

Backend/Web ծառայություն

Լինթ/units wwww.SFC/SCA www.Build www.SBSS/Software Publish Publish (CD)։

Data/ETL

Սխեմաների ստուգումը (dbt test) բացատրում է արտեֆակտների արտադրությունը SQL-ի ստատիկ վերլուծությունը ցույց է տալիս մոդելների և փաստաթղթերի հրապարակումը։

ML/LLM

Տվյալների ստուգումը/wwww.pot-գործակալություններում տեղադրված է ONNX/TronorRT էքսպորտը (latency/tokens/s) տեղադրված է մոդելի ստորագրությունը և հրապարակումը։

12) Ռունաբուկի (տիպիկ պատահարներ)

Հերթը մեծանում է, ավելացրեք պարամետրերը, ստուգեք «քայքայված» դաշտերը, concurrency-ի լիմիթները։

Հավաքումները լողում են 'գործիքների տարբերակներ խմել գործիքների բեռնարկղում։ անջատել shared workspace։

Լոգայի «բադերի» գաղտնիքը 'հեռացնել build-logs, փոխարինել credenschl, կատարել աուդիտ։ ավելացնել դիմակավորում։

Միգրանտների անկումը 'վերականգնումը backup JCasC + jo/plagine-ից տարբերակված է։

13) Ներդրման չեկի ցուցակ

1. Jenkins LTS-ը պլագինների նվազագույն հավաքածուի հետ։ մնացած ամեն ինչ 'խմբագրության մեջ։

2. Էֆեմերական K8s-2019, ռեսուրսների լիմիտներ, layer-kashi։

3. Declarative/Multibranch, PR-validation, "post + always + cleanWs () +։

4. Shared Libraries-ը տարբերակով։ որակի/անվտանգության միասնական քայլեր։

5. Credentials Binding + արտաքին գաղտնիքները; նվազագույն կրճատումները։

6. SCA/SOM/Secret-scan/DMS, SBSA և պատկերների ստորագրություն։

7. JCasC-ը և GitOps-ի կառավարումը։ PR-Reve-ը փոփոխության։

8. Metriki/alerts/ChatOps; trai/timauta; արտեֆակտներ և ամսագրեր։

9. Պահեստավորման/վերականգնումը, աշխատանքային տարածքների աուտո-հիգիենան։

10. Փաստաթղթավորված ռունաբուկները և www.game-day-ը։

14) Անտիպատերնի

Վերահսկիչը «ամեն ինչի սերվերի պես» 'ծանր հավաքումներ և գրագուններ դրա վրա։

Scripted-ջոբը առանց տարբերակման և ռևոյի։

Գաղտնիքների և լոգարանների խառնուրդը։ քրեդենշլի լայն իրավունքներով։

Գործակալները քիչ են/նրանք անընդհատ համագործակցում են շրջակա միջավայրի, flaky թեստերի հետ։

SBSA/արտեֆակտների և CVE խաղերի ստորագրությունները։

«Ձեռքով» կառավարումը, չկա JCasC/GitOps։

Արդյունքները

Jenkins-ը մնում է CI-ի հզոր և ճկուն միջուկը։ Տեղափոխելով կոդի (JCASC), ստանդարտացնելով Shared Libraries-ի քայլերը, սկսելով հավաքումը ephemer K8s-գործակալների վրա և ներկառուցելով անվտանգությունը/ստորագրությունը անմիջապես փոխակրիչի մեջ, դուք կստանաք կանխատեսելի օրինագծեր, որոնք վերահսկվում են արժեքը և դիմադրությունը iGaming-ի գագաթնակետին։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Telegram
@Gamble_GC
Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։