GH GambleHub

GitLab CI/CD iGaming նախագծերի համար

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

Live ռեզյումե

GitLab CI/CD-ը ծրագրերի, վերլուծության և iGaming ծառայությունների մատակարարման «փոխակրիչ» է։ Այն միավորում է 'ռեպոզիտորիա, փայտանյութեր որպես կոդ, շրջակա միջավայրի և անվտանգության կառավարում, սեփական բեռնարկղերի/շարժիչների տարաներ, որոնք համագործակցում են Kubernetes-ի և Terraform-ի հետ, ինչպես նաև խոցելիությունների և շարժիչների սկանավորում։ Հաջողության բանալին նույն ձևանմուշներն են, efemers-scail- ը, իրավունքների և գաղտնիքների խիստ մոդելը, GitOps գործընթացները և արժեքի վերահսկումը։

1) Ճարտարապետություն և դերեր

GitLab (SaaS կամ Winf-Inted) 'խմբեր/նախագծեր, Directed branches/tags, Merge Request Approvals։

Runners: Docker/Kubernetes/Virtual Machine executors. K8s-ում էֆեմերական ենթատեսակները նվազագույնի են հասցնում շրջակա միջավայրի դրեյֆը։

Գրանցումները ՝ Windainer/Package/Dependy Proxy - հիմնական պատկերները և կախվածությունը։

Observability: job logs, job artifac.ru, pipeline insights, metric արտահանումը։

Դերերը ՝ զարգացողներ (MR), meinteers (approve/rele.ru), SecOps (սկանավորման քաղաքականություն), Platform/DevOps (ռաններ, ձևանմուշներ, GitOps)։

2) Հիմքերը '.gitlab-ci։ yml 'փուլեր, կանոններ, կախվածություն

yaml stages: [lint, test, build, security, package, deploy]

variables:
DOCKER_DRIVER: overlay2
IMAGE: "$CI_REGISTRY_IMAGE/app:$CI_COMMIT_SHA"

workflow:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

.default:
image: alpine:3. 20 before_script: [ 'apk add --no-cache bash curl jq' ]

lint:
stage: lint script: [ "make lint" ]
rules: [ { if: '$CI_PIPELINE_SOURCE == "merge_request_event"' } ]

unit:
stage: test script: [ "make test" ]
artifacts:
when: always reports: { junit: "reports/junit. xml" }
needs: [ "lint" ]

build_image:
stage: build image: docker:27 services: [ 'docker:27-dind' ]
variables: { DOCKER_TLS_CERTDIR: "" }
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -t $IMAGE.
- docker push $IMAGE cache:
key: "docker-${CI_COMMIT_REF_SLUG}"
paths: [ "/var/lib/docker" ]
policy: pull-push needs: [ "unit" ]

Պրակտիկա

«rules» ճյուղերի համար/MR/tegs; «needs» DAG-զուգահեռականության համար; «artifac.ru: report.ru» JUnit/coverage; «workflow» - որպեսզի չսկսի լրացուցիչ փամփուշտներ։

3) Ռաններ և ավտո սկեյլ

Kubernetes executor (խորհուրդ)

Էֆեմերական պոդները, CPU/RAM քվոտաները, nodeDirector/tainae-ը, գաղտնիքների մեկուսացումը։

Քաշ/արտեֆակտներ 'օբյեկտի պահեստ; dependency proxy для NPM/Maven/PyPI/Docker.

Docker executor

Պարզ սկիզբ; Օգտագործեք DinD կամ Kaniko/BuildKit-ը առանց արտոնությունների հավաքելու համար։

Խորհուրդ

Որոշ վերքերի փամփուշտներ բեռների տեսակների վրա (Build/Test/System/ML); concurrency-ը խմբի/նախագծի համար; Tegs («k8s», «gpu», «gpu»)։

4) Քաշ, արտեֆակտներ և մատրիցներ

yaml cache:
key: "pip-${CI_COMMIT_REF_SLUG}"
paths: [ "venv/", ".cache/pip/" ]
policy: pull-push

test:py:
stage: test parallel:
matrix:
- PY: ["3. 10", "3. 12"]
image: python:${PY}
script:
- python -m venv venv &&. venv/bin/activate
- pip install -r requirements. txt
- pytest -q

Օգտագործեք գլոբալ dependency proxy-ը, որպեսզի խնայեք հաճախորդը և ժամանակը, split-tes.ru մատրիցով, artifac.ru: expire _ in հիգիենայի համար։

5) Անվտանգություն և համապատասխանություն (Shift-Left)

Տիպիկ «108-stage»։

yaml sast:
stage: security image: registry. gitlab. com/security-products/sast:latest script: [ "analyzer run" ]
artifacts: { reports: { sast: "gl-sast-report. json" } }
rules: [ { if: '$CI_PIPELINE_SOURCE == "merge_request_event"' } ]

secret_detection:
stage: security image: registry. gitlab. com/security-products/secret-detection:latest script: [ "analyzer run" ]
artifacts: { reports: { secret_detection: "gl-secret-report. json" } }

sbom:
stage: security image: alpine:3. 20 script:
- apk add syft cosign
- syft $IMAGE -o cyclonedx-json > sbom. json
- cosign sign --key $COSIGN_KEY $IMAGE artifacts:
reports: { cyclonedx: "sbom. json" }

Նաև 'DMS սթենդների համար, Dependency/License Compliance, պարտադիր MR-aprovals կրիտիկական findings, փոփոխականների դիմակավորում։

6) Շրջակա տարածքները, Review Apps-ը և Alments-ը։

yaml review:
stage: deploy image: bitnami/kubectl environment:
name: review/$CI_COMMIT_REF_SLUG url: https://$CI_COMMIT_REF_SLUG. apps. example. com on_stop: stop_review script:
-./deploy. sh --env=review --image=$IMAGE rules: [ { if: '$CI_PIPELINE_SOURCE == "merge_request_event"' } ]

stop_review:
stage: deploy when: manual environment:
name: review/$CI_COMMIT_REF_SLUG action: stop script: [ "./deploy. sh --env=review --delete" ]

Releault/Masterpline: Helm-chart/արտեֆակտների հրատարակությունը, ռելիզի-նոտների արտադրությունը, պատկերների ստորագրությունը։

7) Progressive delivery: canary/blue-green

yaml deploy_canary:
stage: deploy script: [ "./helm_upgrade. sh --set canary. weight=10 --image=$IMAGE" ]
environment: { name: production }
rules: [ { if: '$CI_COMMIT_TAG' } ]

promote_100:
stage: deploy when: manual script: [ "./helm_upgrade. sh --set canary. weight=100" ]
needs: [ "deploy_canary" ]

Ավելացրեք quality gates: SLO latency/error-rate վերահսկողությունից թույլատրվում է/հակառակը։

8) Parent/Child և multiproection plines pline plines

Parent/Child: արագացնում են մեծ մոնոպրեպոն (յուրաքանչյուր բաղադրիչ 'child pipeline)։

yaml trigger_components:
stage: build trigger:
include: [ "ci/component-a. yml", "ci/component-b. yml" ]
strategy: depend

Multi-Project: «Rele.ru» նախագիծը ձգում է CD-ը մանիֆեստ-ռեպոյում (GitOps)։

9) GitOps и Terraform/IaC

GitOps միջոցով MR մանիֆեստ-ռեպոզորիա

yaml gitops_bump:
stage: deploy image: alpine/git script:
- git clone $MANIFESTS_REPO manifests
- yq -i '.image = env(IMAGE)' manifests/apps/app/values. yaml
- cd manifests && git commit -am "bump $CI_COMMIT_SHA" && git push origin HEAD:$TARGET_BRANCH

Terraform в CI

yaml terraform:
stage: deploy image: hashicorp/terraform:1. 9 script:
- terraform init -backend-config="bucket=$TF_BUCKET"
- terraform plan -out tfplan
- terraform apply -auto-approve tfplan rules: [ { if: '$CI_COMMIT_BRANCH == "infra"'} ]

10) Գաղտնիքներ և հասանելի են

CI Variables: masked/protected; կիսեք շրջապատով/խմբերով։

Eurected branches/tags: Deple-ում 'միայն պաշտպանված ճյուղերից և ձեռքով ապացուցելով։

Արտաքին գաղտնիքները ՝ Secrets Express/HashiProp Vance (JWT/OIDC), միայն job ժամանակ։

11) Դիտարկելով փայտանյութերի և SLO-ի տեսողությունը

Pipeline DORA/KPI: lead time, deployment frequency, change fail rate, MTTR.

Գործիքներ ՝ retrai/timautes, «allow _ failure» ոչ թե արգելափող առաջադրանքների համար, կոդային զեկույցը։

Մեթրիկի էքսպորտը 'քայլերի տևողությունը, աստիճանը, success ratio; ալտերտերը ChatOps-ում։

12) FinOps: Արժեք և արտադրողականություն

Dependency Proxy + կախվածությունը և Docker շերտերը։

Ռանների փամփուշտների բաժանումը (108/108/ML) concurrency-ների հետ։

Avto-դադար Review Apps-ը և ոչ ակտիվ միջավայրերը; «artifac.ru: expire _ in»։

Մեծ հավաքումները 'spot/premptabal փամփուշտների վրա։ հիմնային պատկերների առաջ։

13) iGaming-Cass-ի համար

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

yaml include: [ "ci/includes/security. yml", "ci/includes/docker. yml" ]
deploy_prod:
stage: deploy environment: { name: production, url: https://api. example. com }
script: [ "./helm_upgrade. sh --env=prod --image=$IMAGE" ]
rules: [ { if: '$CI_COMMIT_TAG' } ]

ETL/DBT մոդել

yaml dbt_run:
stage: build image: ghcr. io/dbt-labs/dbt-snowflake:latest script: [ "dbt deps", "dbt run --profiles-dir. ", "dbt test" ]
artifacts: { paths: [ "target/" ], expire_in: 3 days }

ML/LLM արտեֆակտը

yaml ml_pack:
stage: package image: nvidia/cuda:12. 1. 0-runtime-ubuntu22. 04 tags: [ "gpu" ]
script:
- python export_onnx. py
- trtexec --onnx=model. onnx --saveEngine=model. plan artifacts: { paths: [ "model. plan", "model. onnx" ] }

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

1. Ռուսական plins և Shared Includes-ը թիմերի համար (lint/test/build/wwww.de/deploy)։

2. Տեղադրեք efemer K8s-ranners, միացրեք dependency proxy, օբյեկտի storage արտեֆակտների/քեշի համար։

3. Մուտքագրեք rules/needs/DAG, մատրիցա և զուգահեռ։

4. Պարամետրերը SFC/DJ/Secret/SBSA/License և MR-approvals քաղաքական։

5. Կազմակերպեք Environments/Review Apps, ավտոտրանսպորտային և կոկիկ URL։

6. Միացրեք GitOps 'առանձին մանիֆեստ-ռեպո, MR-bamp պատկերներ/գծապատկերներ։

7. Ապահովեք գաղտնիքների կառավարումը (wwww.ked/www.dected, Vox/OIDC), inteced branches/tags։

8. Միացրեք Terraform/IaC և «կոդով»։

9. Մուտքագրեք FinOps-ը 'raners, kash/2019, expire artefakts, Stends ավտոմեքենան։

10. Wingame-day-ը 'վնասվածքի նվազումը, քեշի լրացումը, անհասանելիությունը։

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

Մեկ «համընդհանուր» ռաններ առանց մեկուսացման և քվոտաների։

Առանց «rules» (սկսում են «միշտ»), առանց «needs» (դանդաղ)։

DinD-ի արտոնյալ հավաքումները պրոդ-ռանցերում առանց սահմանափակումների։

Գաղտնի պահելը կրկնօրինակում/job լոգարաններում։

Նախկին փուլի բացակայությունը և MR-approvals-ը։

Անվերջ Review Apps առանց «on _ stop» և «expire _ in»։

Ձեռքի սալիկներն առանց edected tags-ի։

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

GitLab CI/CD-ն տալիս է iGaming-թիմերին արագ և կանխատեսելի ալգորիթմներ 'մեկ ձևանմեր, Auto-scail ranners, անվտանգության, միջավայրի և առաջադեմ deploi, GitOps և Terraform ինտեգրացիա։ Ավելացրեք դիտարկումը և FinOps-ը, և ձեր ծրագրերը, ETL և ML ծառայությունները պարբերաբար, անվտանգ և վերահսկվող արժեքը։

Contact

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

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

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

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

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

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