GH GambleHub

IGaming परियोजनाओं के लिए GitLab CI/CD

(धारा: प्रौद्योगिकी और बुनियादी ढांचा)

संक्षिप्त सारांश

GitLab CI/CD iGaming एप्लिकेशन, एनालिटिक्स और ML सेवाओं के लिए एक डिलीवरी पाइपलाइन है। यह जोड़ ती है: भंडार, कोड, पर्यावरण और सुरक्षा प्रबंधन के रूप में पाइपलाइन, अपने स्वयं के कंटेनर/पैकेज रजिस्ट्री, कुबर्नेट्स और टेराफॉर्म के साथ एकीकरण, साथ ही भेद्यता और लाइसेंस स्कैनिंग। सफलता की कुंजी एक ही पाइपलाइन टेम्पलेट, ऑटो-स्केल के साथ पंचांग धावक, एक सख्त अधिकार और रहस्य मॉडल, GitOps प्रक्रियाओं और लागत नियंत्रण है।

1) वास्तुकला और भूमिकाएँ

GitLab (SaaS या स्व-प्रबंधित): समूह/परियोजनाएं, संरक्षित शाखाएँ/टैग, विलय अनुरोध अनुमोदन।

धावक: Docker/Kubernetes/वर्चुअल मशीन निष्पादक। K8s में अल्पकालिक चूल्हा मध्यम बहाव को कम करता है।

रजिस्टर: कंटेनर/पैकेज/डिपेंडेंसी प्रॉक्सी - कैश बेस इमेज और डिपेंडेंसी।

अवलोकन: नौकरी लॉग, नौकरी कलाकृतियां, पाइपलाइन अंतर्दृष्टि, निगरानी के लिए निर्यात मेट्रिक्स।

भूमिकाएँ: डेवलपर्स (MR), मेंटेनर्स (अनुमोदन/रिलीज़), 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" ]
अभ्यास:
  • शाखाओं/एमआर/टैग के लिए 'रूल्स'; डीएजी समानता के लिए 'नेड्स'; JUnit/कवरेज के लिए 'कलाकृतियां: रिपोर्ट'; 'वर्कफ्लो' - ताकि अनावश्यक पाइपलाइनें न चलाएं।

3) धावक और ऑटो-स्केल

Kubernetes निष्पादक (अनुशंसित)

पंचांग फली, सीपीयू/रैम कोटा, nodeSelector/tains, गुप्त अलगाव।

कैश/कलाकृतियाँ: वस्तु भंडारण; निर्भरता प्रॉक्सी для एनपीएम/मावेन/पीवाईपीआई/डॉकर।

डॉक्टर निष्पादक

सरल शुरुआत; बिना विशेषाधिकार के निर्माण के लिए DinD या Kaniko/BrainKit का उपयोग करें।

युक्तियाँ:
  • लोड प्रकारों द्वारा अलग धावक पूल (बिल्ड/टेस्ट/सिक्योरिटी/एमएल); प्रति समूह/परियोजना की संगामिति सीमा; रनर टैग ('k8s', '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

यातायात और समय को बचाने के लिए वैश्विक निर्भरता प्रॉक्सी का उपयोग करें, मैट्रिक्स द्वारा विभाजन-परीक्षण, स्वच्छता के लिए।

5) सुरक्षा और अनुपालन (शिफ्ट-लेफ्ट)

विशिष्ट "सुरक्षा-चरण":
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, महत्वपूर्ण निष्कर्षों के लिए अनिवार्य MR-अनुमोदन, मास्किंग चर।

6) वातावरण, समीक्षा एप्लिकेशन और रिलीज़

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

रिलीज ़/टैग पाइपलाइन: हेल्म चार्ट/कलाकृतियों को प्रकाशित करना, रिलीज़ नोट्स बनाना, छवियों पर हस्ताक्षर करना।

7) प्रगतिशील वितरण: कैनरी/नीला-हरा

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

गुणवत्ता गेट जोड़ें: SLO विलंबता/त्रुटि-दर की निगरानी से → रिज़ॉल्यूशन/रोलबैक।

8) माता-पिता/बच्चे और बहु-परियोजना पाइपलाइन

माता-पिता/बच्चा: बड़े मोनोरेपोस में तेजी लाएं (प्रत्येक घटक एक बाल पाइपलाइन है)।

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

मल्टी-प्रोजेक्ट: "रिलीज़" परियोजना सीडी को रेपो (GitOps) घोषित करने के लिए ट्रिगर करती है।

9) GitOps и Terraform/IaC

रिपॉजिटरी प्रकट करने के लिए एमआर के माध्यम से GitOps

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

टेराफॉर्म в सीआई

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) रहस्य और पहुँच

सीआई चर: नकाबपोश/संरक्षित; पर्यावरण/समूह द्वारा अलग।

संरक्षित शाखाएं/टैग: प्रोड में जारी - केवल संरक्षित शाखाओं से और मैनुअल पुष्टि के साथ।

बाहरी रहस्य: सीक्रेट मैनेजर/HashiCorp वॉल्ट (JWT/OIDC) के साथ एकीकरण, केवल नौकरी की अवधि के लिए धावकों पर बढ़ ते हुए।

11) पाइपलाइन और एसएलओ अवलोकन

पाइपलाइन DORA/KPI: लीड टाइम, प्लानिंग फ्रीक्वेंसी, फेल रेट, MTTR।

उपकरण: नॉन-ब्लॉकिंग कार्यों, कोड कवरेज रिपोर्ट के लिए रिट्रेज ़/टाइमआउट, 'अनुमति _ विफलता'।

निर्यात मैट्रिक्स: चरणों की अवधि, धावक कतार, सफलता अनुपात; ChatOps में अलर्ट।

12) FinOps: लागत और प्रदर्शन

निर्भरता प्रॉक्सी + डॉकर निर्भरता और परत कैश।

विभाजन धावक पूल (prod/security/ML) संगामिति सीमा के साथ।

ऑटो-ठहराव समीक्षा एप्लिकेशन और निष्क्रिय वातावरण; 'कलाकृतियाँ: समाप्त करें _ in'।

बड़ी विधानसभाएँ - स्पॉट/पूर्वनिर्मित पूल पर; बुनियादी छवियों का पूर्व-हीटिंग।

13) iGaming मामलों के लिए साँचा

बैकेंड/एपीआई सेवा

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' } ]

ईटीएल/डीबीटी मॉडल

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 }

एमएल/एलएलएम कलाकृतियाँ

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. पाइपिंग को परिभाषित करें और साझा कमांड के लिए पैटर्न शामिल करें (लिंट/परीक्षण/बिल्ड/सुरक्षा/तैनाती)।

2. पंचांग - धावक तैनात करें, निर्भरता प्रॉक्सी सक्षम करें, कलाकृतियों/कैश के लिए वस्तु भंडारण।

3. नियम/आवश्यकताएं/DAG, मैट्रिसेस और संगति दर्ज करें।

4. नीति द्वारा SAST/DAST/सीक्रेट/SBOM/लाइसेंस और MR-अनुमोदन कॉन्फ़िगर करें।

5. वातावरण/समीक्षा एप्लिकेशन, ऑटो-क्लोज और साफ यूआरएल का आयोजन करें।

6. GitOps शामिल करें: स्टैंडअलोन घोषणापत्र रेपो, MR-bump दिखता है/चार्ट।

7. गुप्त प्रबंधन (नकाबपोश/संरक्षित, तिजोरी/OIDC), संरक्षित शाखाएँ/टैग प्रदान करें।

8. Terraform/IaC और "कोड के रूप में मॉनिटर करें"।

9. FinOps अभ्यास दर्ज करें: धावक सीमा, कैश/प्रॉक्सी, कलाकृतियों की समाप्ति, ऑटो-ठहराव स्टैंड।

10. नियमित खेल-दिन: धावक ड्रॉप, कैश फिल, रजिस्ट्री अनुपलब्धता।

15) एंटीपैटर्न

अलगाव और कोटा के बिना एक "सार्वभौमिक" धावक।

'नियम' ('हमेशा' चलाएं) के बिना पाइपलाइनें, 'जरूरत' (धीरे-धीरे)।

विशेषाधिकार प्राप्त DinD असीमित उत्पादन धावकों में बनाता है।

भंडार/कार्य लॉग में रहस्यों का भंडारण।

सुरक्षा चरण और एमआर-अनुमोदन की कमी।

'ऑन _ स्टॉप' और 'एक्सपायर _ इन' के बिना अनंत समीक्षा एप्लिकेशन.

संरक्षित टैग के बिना प्रोड में मैनुअल रिलीज।

सारांश

GitLab CI/CD iGaming टीमों को तेज और पूर्वानुमानित रिलीज देता है: समान टेम्पलेट, ऑटो-स्केल धावक, उच्च गुणवत्ता वाले सुरक्षा द्वार, वातावरण और प्रगतिशील deploes, Gitops और Terraform एकीकरण। अवलोकन और FinOps जोड़ें - और आपके ऐप, ETL और ML सेवाएं नियमित रूप से, सुरक्षित और नियंत्रित लागत पर जारी की जाएंगी।

Contact

हमसे संपर्क करें

किसी भी प्रश्न या सहायता के लिए हमसे संपर्क करें।हम हमेशा मदद के लिए तैयार हैं!

इंटीग्रेशन शुरू करें

Email — अनिवार्य है। Telegram या WhatsApp — वैकल्पिक हैं।

आपका नाम वैकल्पिक
Email वैकल्पिक
विषय वैकल्पिक
संदेश वैकल्पिक
Telegram वैकल्पिक
@
अगर आप Telegram डालते हैं — तो हम Email के साथ-साथ वहीं भी जवाब देंगे।
WhatsApp वैकल्पिक
फॉर्मैट: देश कोड और नंबर (उदा. +91XXXXXXXXXX)।

बटन दबाकर आप अपने डेटा की प्रोसेसिंग के लिए सहमति देते हैं।