GH GambleHub

iGaming жобаларына арналған GitLab CI/CD

(Бөлім: Технологиялар және Инфрақұрылым)

Қысқаша түйіндеме

GitLab CI/CD - iGaming қосымшалары, талдаулары және ML-сервистері үшін жеткізудің «конвейері». Ол: репозиторий, код ретінде пайплайндар, қоршаған ортаны және қауіпсіздікті басқару, контейнерлердің/пакеттердің жеке тізілімі, Kubernetes және Terraform-мен интеграциялау, сондай-ақ осалдықтар мен лицензияларды сканерлеу. Табыстың кілті - пайплайндардың бірдей үлгілері, авто-скейлі эфемерлік раннерлер, құқықтар мен құпиялардың қатаң моделі, GitOps-процестер және құнды бақылау.

1) Сәулет және рөлдер

GitLab (SaaS немесе Self-Managed): топтар/жобалар, Protected branches/tags, Merge Request Approvals.
Runners: Docker/Kubernetes/Virtual Machine executors. K8s эфемерлік тұнбалар ортаның дрейфін барынша азайтады.
Тіркелімдер: Container/Package/Dependency Proxy - негізгі бейнелер мен тәуелділіктерді кэштейді.
Observability: job logs, job artifacts, pipeline insights, метриктерді мониторингке экспорттау.

Рөлдер: әзірлеушілер (MR), мейнтейнерлер (approve/release), 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/тегтер үшін; 'needs' DAG-параллелизм үшін; 'artifacts: reports' JUnit/coverage үшін; 'workflow' - артық пайплайндарды іске қоспау үшін.

3) Раннерлер және авто-скейл

Kubernetes executor (ұсынылады)

Эфемерлік тұнбалар, CPU/RAM квоталары, nodeSelector/taints, құпияларды оқшаулау.
Кэш/артефактілер: нысандық сақтау орны; dependency proxy для NPM/Maven/PyPI/Docker.

Docker executor

Қарапайым бастау; артықшылықтарсыз құрастыру үшін DinD немесе Kaniko/BuildKit пайдаланыңыз.

Кеңестер:
  • Жүктеме түрлері бойынша раннерлердің жеке пулдары (Build/Test/Security/ML); топқа/жобаға concurrency лимиттері; раннер тегтері ('k8s', 'gpu', 'security').

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

Трафик пен уақытты үнемдеу үшін global dependency proxy, гигиена үшін artifacts:expire_in матрица бойынша split-tests пайдаланыңыз.

5) Қауіпсіздік және сәйкестік (Shift-Left)

Типтік «security-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" }

Сондай-ақ: стендтер үшін DAST, Dependency/License Compliance, маңызды findings кезінде міндетті MR-approvals, айнымалыларды бүркемелеу.

6) Қоршаған орта, Review Apps және релиздер

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" ]

Release/Tag пайплайн: Helm-чартын/артефакттарды жариялау, релиз-ноталарды генерациялау, бейнелерге қол қою.

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 және мультипроектілік пайплайндар

Parent/Child: үлкен монорепоны жылдамдатады (әрбір компонент - child pipeline).

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

Multi-Project: «Release» жобасы манифест-репоға (GitOps) CD триггерін жасайды.

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; орталар/топтар бойынша бөліңіз.
Protected branches/tags: prod-ға деплой - тек қорғалған бұтақтардан және қолмен расталған.
Сыртқы құпиялар: Secrets Manager/HashiCorp Vault (JWT/OIDC) жүйесімен интеграциялау, тек job.

11) Пайплайндардың және SLO бақылануы

Pipeline DORA/KPI: lead time, deployment frequency, change fail rate, MTTR.
Құралдар: ретрациялар/таймауттар, 'allow _ failure' блоктамайтын тапсырмалар үшін, кодты жабу есебі.
Метриктер экспорты: сатылар ұзақтығы, раннерлер кезегі, success ratio; ChatOps бағдарламасындағы алерттар.

12) FinOps: құны және өнімділігі

Dependency Proxy + тәуелділік кэші және Docker қабаттары.
Раннерлер пулдарын concurrency лимиттерімен бөлу (prod/security/ML).
'artifacts: expire _ in'.
Ірі құрастырмалар - spot/тұрақсыз пулдарда; негізгі бейнелерді алдын ала жылыту.

13) iGaming-кейстерге арналған үлгілер

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. (lint/test/build/security/deploy) пәрмендеріне арналған пайплайн және Shared Includes үлгілерін анықтаңыз.
2. Эфемерлік K8s-арналарын кеңейтіңіз, dependency proxy, артефакттар/кэш үшін нысан storage қосыңыз.
3. rules/needs/DAG, матрицалар мен параллелизмді енгізіңіз.
4. SAST/DAST/Secret/SBOM/License және MR-approvals бағдарламаларын саясатпен теңшеңіз.
5. Environments/Review Apps, автоматты жабу және ұқыпты URL-лерді ұйымдастырыңыз.
6. GitOps: жеке манифест-репоны, MR-бейнелер/чартлар бампын қосыңыз.
7. Құпияларды басқаруды қамтамасыз етіңіз (masked/protected, Vault/OIDC), protected branches/tags.
8. Terraform/IaC және «код ретінде мониторинг» қосыңыз.
9. FinOps тәжірибесін енгізіңіз: раннерлер, кэш/прокси, экспонаттар expire, стенд автопаузы.
10. Тұрақты game-day: раннердің құлауы, кэштің толтырылуы, тізілімнің қол жетімсіздігі.

15) Антипаттерндер

Оқшаулаусыз және квотасыз бір «әмбебап» раннер.
'rules' («әрқашан» іске қосылады), 'needs' (баяу).
Шектеусіз прод-раннерлердегі DinD артықшылықты жинақтары.
Құпияларды репозиторийде/job.
security-сатысының және MR-approvals болмауы.
'on _ stop' және 'expire _ in' жоқ шексіз Review Apps.
protected tags жоқ prod қол релиздері.

GitLab CI/CD iGaming командаларына жылдам және болжамды релиздер береді: бірыңғай үлгілер, раннерлердің авто-скейлдері, сапалы қауіпсіздік гейттері, орта және прогрессивті деплойлер, GitOps және Terraform-интеграция. Бақылау және FinOps қосыңыз - және сіздің қосымшаларыңыз, ETL және ML қызметтері тұрақты, қауіпсіз және бақыланатын құнмен шығарылады.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Telegram
@Gamble_GC
Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.