GH GambleHub

GitLab CI/CD iGaming projeleri için

(Bölüm: Teknoloji ve Altyapı)

Kısa Özet

GitLab CI/CD, iGaming uygulamaları, analitik ve ML hizmetleri için bir dağıtım hattıdır. Bilgi havuzu, kod olarak boru hatları, çevre ve güvenlik yönetimi, kendi konteyner/paket kayıt defteri, Kubernetes ve Terraform ile entegrasyonların yanı sıra güvenlik açığı ve lisans taramasını birleştirir. Başarının anahtarı aynı boru hattı şablonları, otomatik skale ile geçici koşucular, katı haklar ve sırlar modeli, GitOps süreçleri ve maliyet kontrolüdür.

1) Mimari ve roller

GitLab (SaaS veya Self-Managed): gruplar/projeler, Korumalı dallar/etiketler, Birleştirme İsteği Onayları.
Koşucular: Docker/Kubernetes/Virtual Machine yürütücüleri. K8s geçici ocaklar orta sürüklenmeyi en aza indirir.
Registers: Container/Package/Dependency Proxy - temel görüntüleri ve bağımlılıkları önbelleğe alın.
Gözlemlenebilirlik: iş kayıtları, iş artifaktları, boru hattı içgörüleri, metrikleri izlemeye dışa aktarma.

Roller: Geliştiriciler (MR), geliştiriciler (onayla/bırak), SecOps (tarama politikaları), Platform/DevOps (koşucular, şablonlar, GitOps).

2) Temel bilgiler '.gitlab-ci. yml ': aşamalar, kurallar, kısıtlamalar

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" ]
Uygulamalar:
  • Dallar/MR/etiketler için 'doğrular'; DAG paralelliği için 'değerler'; JUnit/kapsama için 'artifacts: raporları'; 'workflow' - gereksiz boru hatlarını çalıştırmamak için.

3) Koşucular ve otomatik ölçek

Kubernetes yürütücüsü (önerilir)

Geçici bölmeler, CPU/RAM kotaları, nodeSelector/tains, gizli izolasyon.
Önbellek/artifacts: nesne depolama; NPM/Maven/PyPI/Docker для bağımlılık.

Docker yürütücüsü

Basit başlangıç; Ayrıcalıksız oluşturmak için DinD veya Kaniko/BuildKit kullanın.

Konseyler:
  • Yük türlerine göre ayrı koşucu havuzları (Yapı/Test/Güvenlik/ML); Grup/proje başına eşzamanlılık sınırları; Koşucu etiketleri ('k8s', 'gpu', 'security').

4) Önbellek, eserler ve matrisler

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

Trafik ve zamandan tasarruf etmek için global bağımlılık proxy'sini kullanın, matrise göre bölünmüş testler, hijyen için artifacts:expire_in.

5) Güvenlik ve uyumluluk (Shift-Left)

Tipik "güvenlik aşaması":
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" }

Ayrıca: Standlar için DAST, Bağımlılık/Lisans Uyumu, kritik bulgular için zorunlu MR onayları, maskeleme değişkenleri.

6) Ortamlar, İnceleme Uygulamaları ve Sürümler

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 pipeline: Helm chart/artifacts yayınlama, sürüm notları oluşturma, görüntüleri imzalama.

7) Aşamalı teslimat: kanarya/mavi-yeşil

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

Kalite kapıları ekleyin: İzlemeden SLO gecikmesi/hata oranı - çözünürlük/geri alma.

8) Ebeveyn/Çocuk ve çok projeli boru hatları

Üst/Alt: Büyük monorepoları hızlandırır (her bileşen bir alt boru hattıdır).

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

Çoklu Proje: "Release'projesi, CD'yi repo (GitOps) tezahür ettirmek için tetikler.

9) GitOps и Terraform/IaC

GitOps, depoyu tezahür ettirmek için MR aracılığıyla

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) Sırlar ve erişimler

CI Değişkenleri: maskelenmiş/korumalı; Çevreye/gruba göre ayrılır.
Korumalı dallar/etiketler: prod'da serbest bırakın - sadece korunan dallardan ve manuel onay ile.
Dış sırlar: Secrets Manager/HashiCorp Vault (JWT/OIDC) ile entegrasyonlar, sadece iş süresince koşuculara montaj.

11) Boru hattı ve SLO gözlemlenebilirliği

Boru hattı DORA/KPI: teslim süresi, dağıtım frekansı, değişim başarısızlık oranı, MTTR.
Araçlar: Retrays/timeouts, engellemeyen görevler için 'allow _ failure', kod kapsama raporu.
İhracat metrikleri: aşamaların süresi, koşucu kuyruğu, başarı oranı; ChatOps'ta uyarılar.

12) FinOps: maliyet ve performans

Dependency Proxy + Docker bağımlılığı ve katman önbelleği.
Eşzamanlılık sınırları olan bölünmüş koşucu havuzları (prod/security/ML).
Otomatik duraklatma İnceleme Uygulamaları ve etkin olmayan ortamlar; 'artifacts: expire _ in'.
Büyük montajlar - spot/prefabrik havuzlarda; Temel görüntülerin ön ısıtılması.

13) iGaming durumları için şablonlar

Arka uç/API hizmeti

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 modeli

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 artifakı

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) Uygulama kontrol listesi

1. Boruları tanımlayın ve komutlar için Paylaşılan Dahil desenleri (tiftik/test/yapı/güvenlik/dağıtım).
2. Geçici K8s koşucularını dağıtın, bağımlılık proxy'sini etkinleştirin, eserler/önbellek için nesne depolama.
3. Kurallar/ihtiyaçlar/DAG, matrisler ve eşzamanlılık girin.
4. SAST/DAST/Secret/SBOM/License ve MR onaylarını politikaya göre yapılandırın.
5. Ortamları Düzenle/Uygulamaları Gözden Geçir, otomatik olarak kapat ve düzgün URL'ler.
6. GitOps dahil: bağımsız manifesto repo, MR-bump görünüyor/grafikler.
7. Gizli yönetim (maskelenmiş/korumalı, Vault/OIDC), korumalı dallar/etiketler sağlayın.
8. Terraform/IaC'yi bağlayın ve "kod olarak izleyin".
9. FinOps uygulamalarını girin: koşucu sınırları, önbellek/proxy, son kullanma tarihi geçmiş eserler, otomatik duraklatma standları.
10. Normal oyun günleri: koşucu bırakma, önbellek doldurma, kayıt defteri bulunamazlığı.

15) Antipatterns

İzolasyon ve kotalar olmadan bir "evrensel" koşucu.
'Kurallar' olmadan boru hatları ('her zaman 'çalıştırın),' ihtiyaçlar 'olmadan (yavaşça).
Ayrıcalıklı DinD sınırsız üretim koşucuları oluşturur.
Depo/iş günlüklerinde sırların saklanması.
Güvenlik aşaması ve MR onayları eksikliği.
'On _ stop've' expire _ in 'olmadan Sonsuz İnceleme Uygulamaları.
Prod'da korumalı etiketler olmadan manuel sürümler.

Özet

GitLab CI/CD, iGaming ekiplerine hızlı ve öngörülebilir sürümler sunar: tek tip şablonlar, otomatik skale koşucuları, yüksek kaliteli güvenlik kapıları, ortamlar ve aşamalı deplolar, GitOps ve Terraform entegrasyonu. Gözlemlenebilirlik ve FinOps ekleyin - uygulamalarınız, ETL ve ML hizmetleriniz düzenli, güvenli ve kontrollü bir maliyetle yayınlanacaktır.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.