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

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

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

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

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

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

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