GH GambleHub

GitLab CI/iGaming долбоорлор үчүн CD

(Бөлүк: Технология жана инфраструктура)

Кыскача резюме

GitLab CI/CD - тиркемелер, аналитика жана iGaming ML кызматтары үчүн "конвейер" жеткирүү. Ал бириктирет: репозиторий, код катары пайплайндар, айлана-чөйрөнү жана коопсуздукту башкаруу, контейнерлердин/пакеттердин өздүк реестри, Kubernetes жана Terraform менен интеграция, ошондой эле алсыздыктарды жана лицензияларды сканерлөө. Ийгиликтин ачкычы - бирдей пайплайн шаблондору, авто скейлдер менен эфемердик раннерлер, укуктардын жана сырлардын катуу модели, GitOps процесстери жана наркын көзөмөлдөө.

1) Архитектура жана ролдору

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

Ролдору: иштеп чыгуучулар (MR), негизги (approve/release), SecOps (сканерлөө саясаты), платформа/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) Runner жана авто-скейл

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 колдонуңуз, матрица боюнча split-tests, гигиеналык artifacts:expire_in.

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 Pipline: 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) Paypline жана SLO байкоо

Pipeline DORA/KPI: lead time, deployment frequency, change fail rate, MTTR.
Инструменттер: retrailer/таймауттар, 'allow _ failure' үчүн эмес блоктоочу тапшырмалар, отчеттук кодду жабуу.
Экспорт метриктер: этап узактыгы, кезек, success ratio; ChatOps Алерт.

12) FinOps: наркы жана аткаруу

Dependency Proxy + көз карандылык кэш жана Docker катмарлары.
Concurrency лимиттери менен раннерлердин (prod/security/ML) пулдарын бөлүү.
Auto-пауза Review Apps жана активдүү эмес чөйрөлөр; 'artifacts: expire _ in'.
Чоң монтаждары - spot/туруктуу пулда; негизги сүрөттөрдү алдын ала жылытуу.

13) iGaming Cases үчүн шаблондор

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, артефакттар/кэш үчүн объектти сактоо.
3. rules/needs/DAG, матрицаларды жана параллелизмди киргизиңиз.
4. SAST/DAST/Secret/SBOM/License жана MR-approvals саясат боюнча орнотуу.
5. Environments/Review Apps, Auto Booking жана тыкан URL уюштуруу.
6. GitOps киргизиңиз: өзүнчө манифест-репо, MR-бамп сүрөттөр/хит-параддар.
7. Сырларды башкарууну камсыз кылуу (masked/protected, Vault/OIDC), protected branches/tags.
8. Терраформ/IaC жана "код катары мониторинг" туташтырыңыз.
9. FinOps практикасын киргизиңиз: раннерлердин лимиттери, кэш/прокси, экспонаттар, стенддердин автопаузасы.
10. Үзгүлтүксүз оюн-күнү: runner кулап, кэш толтуруу, реестр жеткиликсиз.

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

Бир "универсалдуу" обочолонуу жана квота жок раннер.
Payplayness 'rules' ("ар дайым" башталат), жок 'needs' (жай).
Преференцияланган DinD монтаждары эч кандай чектөөсүз прод-раннерлерде.
Сырларды репозиторийде/job логдорунда сактоо.
security-этап жана MR-approvals жок.
'on _ stop' жана 'expire _ in' жок чексиз Review Apps.
Колдо релиздер жок protected tags.

Натыйжалары

GitLab CI/CD iGaming командаларына тез жана алдын ала боло турган релиздерди берет: бирдиктүү шаблондор, авто скейл раннерлери, сапаттуу коопсуздук оюндары, чөйрө жана прогрессивдүү деплойлор, GitOps жана терраформ-интеграция. Байкоо жана FinOps кошуу - жана тиркемелер, ETL жана ML-кызматтар үзгүлтүксүз, коопсуз жана контролдук наркы менен чыгарылат.

Contact

Биз менен байланышыңыз

Кандай гана суроо же колдоо керек болбосун — бизге кайрылыңыз.Биз дайым жардам берүүгө даярбыз!

Интеграцияны баштоо

Email — милдеттүү. Telegram же WhatsApp — каалооңузга жараша.

Атыңыз милдеттүү эмес
Email милдеттүү эмес
Тема милдеттүү эмес
Билдирүү милдеттүү эмес
Telegram милдеттүү эмес
@
Эгер Telegram көрсөтсөңүз — Emailден тышкары ошол жактан да жооп беребиз.
WhatsApp милдеттүү эмес
Формат: өлкөнүн коду жана номер (мисалы, +996XXXXXXXXX).

Түшүрүү баскычын басуу менен сиз маалыматтарыңыздын иштетилишине макул болосуз.