GH GambleHub

Staging-пайплайндар және релиздер

1) staging-paypline не үшін қажет

Staging-paypline - бұл артефакттың PR-дан «әдепкі» сапа мен қауіпсіздікті тексеру арқылы шығаруға дейінгі стандартталған жолы. Мақсаттары:
  • құрастыру мен шығарудың жаңғыртылуы;
  • жылдам және болжамды фидбек;
  • тәуекелді барынша азайту (прогрессивті тегістеу, фичефлагтар, қайтарулар);
  • комплаенске сәйкестігі және өзгерістерді бақылау.

2) Эталондық жеткізу ағыны (high-level)

1. PR → автоматты тексеру (lint, unit, SAST, лицензиялар).
2. Build → детерминирленген кескін/пакет, қолтаңба және SBOM.
3. Test on Ephemeral → per-PR алдын ала ортасы.

4. Merge → Staging:
  • бейне деплой;
  • келісім-шарт, интеграциялық, e2e-тестілер;
  • DAST/IAST, регрестер, жүктеме smoke;
  • қажет болған жағдайда қол UAT/QA.
  • 5. Release Candidate (RC) → freeze window → Prod (canary/blue-green).
  • 6. Post-deploy тексеру және SLO/error budget бойынша автооткат.
  • 7. Runbook/Changelog → релизді және ретроспективаны жабу.

3) Стандартталған YAML-пайплайн үлгісі (ұстау)

yaml
.ci/release.pipeline.yml stages: [verify, build, test, stage, approve, release, post]

verify:
- run: make lint test:unit sbom sast sca build:
- run:
docker build -t registry/app:$GIT_SHA.
cosign sign registry/app:$GIT_SHA oras push registry/sbom:$GIT_SHA sbom.json test:
- run: make test:contract test:integration
- run: make deploy:preview && make test:e2e stage:
- run: make deploy:staging IMAGE=registry/app:$GIT_SHA
- run: make test:e2e:staging && make dast approve:
manual gate: CAB/QA lead
- type: manual required_roles: [release_manager, qa_lead]
release:
- run: make release:canary TRAFFIC=5%
- run: make release:progressive STEPS="5,25,50,100"
post:
- run: make verify:slo && make notify && make create:changelog

4) Gates және дайындық критерийлері (Quality Gates)

Код және қауіпсіздік: линттер, жабын, SAST/SCA, тәуелділік саясаты, «critical/high» болмауы.
Келісімшарттар: схемалардың үйлесімділігі (API/оқиғалар), Pact/Buf тексеру.
Тесттер: unit/integration/e2e p-өту шегі, тұрақтылық (flake-rate).
Жүктеме smoke: p95/p99 бюджет шеңберінде, деградация жоқ.
DAST/IAST: сыни findings жоқ, сезімтал жолдар үшін пен-тест сценарийлер.
Observability: «as code» дашбордтары/алерттері жаңартылған, runbooks қолданылған.
CAB/UAT: шығару терезелерінде растау (егер реттеуіш/бизнес талап етсе).


5) Релиздік стратегиялар

Feature Flags - redeploy жоқ сызықты логикалық қосу; «dark launch» және A/B мүмкіндігі

Canary - трафик үлесінің біртіндеп ұлғаюы (5% → 25% → 50% → 100%), SLO және аномалиялар бойынша автоматты roll-forward/rollback.
Blue-Green - параллель орта; жылдам қосқыш, қарапайым кері қайтару.
Shadow/Traffic Mirroring - пайдаланушыларға әсер етпейтін жаңа нұсқаға трафикті пассивті айдап өту.
Ring Deployments - өңірлер/тенанттар бойынша толқындар.


6) Кері шегіністер және релиздердің қауіпсіздік саясаты

Триггерлер бойынша автооткат: биіктігі error-rate, табалдырықтан жоғары p95/TTFB, биіктігі 5xx/timeout, DLQ секірісі.
Қолмен кері қайту: '/rollback <service> <sha> 'командасы чат-ботта, релиз-консолдың бір батырмасы.
Freeze windows: сыни оқиғаларды (турнирлер/ең жоғары матчтар) шығаруға тыйым салынған.
Changelog & Release Notes: PR генерациясы, SemVer тегтері, компоненттер, миграциялар.


7) ДБ көші-қоны және үйлесімділігі

Expand → Migrate → Contract:

1. үйлесімді өрістерді/индекстерді қосу;

2. қосымшаны (екі схемада да оқиды/жазады);

3. деректердің фондық джобтармен көші-қоны;

4. ескісін жою.

Схемалар нұсқаланады, көшу idempotent, dry-run staging.

Protect destructive SQL: require flag/approval, автоматты бэкаптар және plan-check.


8) Фичефлагтар және үдемелі белсендіру

ops жалауларын (қауіпсіз пайдалану үшін) және product жалауларын бөліңіз.
Аудитория бойынша қосу: пайыз, гео, тенант, рөлі.
Жалау өлшемдері: конверсияға әсер ету, latency, қателер.
Проблемалар кезінде - жалауды жылдам орау.


9) Шығарылымның бір бөлігі ретінде Observability

Трестер: өтпелі 'trace _ id' gatewayден ДБ/кезекке дейін; ескі/жаңа нұсқаларын салыстыру.
Метриктер: p50/p95/p99, error-rate, RPS, saturation, DLQ, ретра, Time-to-Wallet/Business KPI.
Логтар: құрылымдалған, PII бүркемелеу, 'request _ id' корреляциясы.
Алерттар: SLO-бюджет, on-call жедел беттері, релизді авто-орау.


10) Жеткізу тізбегінің қауіпсіздігі (supply chain)

Әрбір билдке SBOM, сақтау және релиз тегіне байланыстыру.
Кескін қолтаңбалары (cosign), кластерде тексеру (policy admission).
SLSA-аттестаттау: артефактінің дәлелденетін шығу тегі.
Policy-as-Code (OPA/Conftest): инфрақұрылымдық PR үшін deny-by-default.
Құпиялар: тек KMS, қысқа өмір сүретін токендер, пайплайндардағы ротациялар.


11) Өзгерістерді бақылау және процестер

RFC → CRQ → CAB: мінез-құлықтың/келісімшарттардың құжатталған ауысуын алдын ала келісеміз.
Release Calendar: өнімдер/аймақтар/командалар бойынша көрінетін терезелер.
Runbooks: әрбір компонент үшін - қосу/қайтару/диагностикалау рәсімдері.
Postmortem/Retro: маңызды релиздерден кейін - талдау және әрекеттер.


12) Staging тестілеу профильдері

Келісімшарттық (API/Events): үйлеспейтін өзгерістерді бұғаттайды.
Интеграциялық/е2е: «депозит», «KYC», «шығару» жалғаспалы сценарийлері.
Жүктеме smoke: репрезентативті шыңдар; ресурстық лимиттерді қадағалаймыз.
Хаос сценарийлері: провайдерді ажырату, жасырындылықтың өсуі, желілік флаппингтер.
Синтетикалық мониторинг: кесте бойынша «сынама» транзакциялар.


13) Жіберу мақсаттарының Makefile үлгісі (фрагмент)

makefile release: verify build test stage approve prod post verify:
@make lint test:unit sbom sast sca build:
docker build -t $(IMG).
cosign sign $(IMG)
test:
@make test:contract test:integration deploy:preview test:e2e stage:
kubectl apply -k deploy/staging approve:
@echo "Waiting for QA/CAB approval..."
prod:
make release:canary TRAFFIC="5 25 50 100"
post:
@make verify:slo notify changelog

14) Рөлдер мен жауапкершілік

Dev/Team: код сапасы, тесттер, көші-қон, runbooks.
QA: UAT/regression сценарийлері, gates-те сапаны бақылау.
SRE/Платформа: пайплайн сенімділігі, бақылау, саясат.
Release Manager: күнтізбе, терезелер, CAB, соңғы шешім.
Security: SAST/DAST/SCA, supply-chain, құпия саясаты.


15) Релиздердің жетілу моделі

1. Базалық - қолмен тексеру, сирек релиздер, кері қайту қиын.
2. Жетілдірілген - стандартталған CI/CD, staging-контур, canary/blue-green, жиі релиздер.
3. Сарапшылық - тенанттар/өңірлер бойынша прогрессивті жеткізу, feature flags-first, policy-as-code, SLO бойынша автооткат, толық трассалану және SLSA.


16) Енгізу жол картасы

M0-M1 (MVP): пайплайн үлгісі, build + sign + SBOM, staging-deploy, базалық тесттер және gates.
M2-M3: canary/blue-green, алдын ала per-PR, келісімшарт-тесттер, DAST, synthetic checks.
M4-M6: feature flags платформа, shadow traffic, policy-as-code, автооткат, release calendar + CAB-workflow.
M6 +: өңірлер бойынша ring-deployments, SLSA-аттестаттау және қатаң admission, runbooks толық автоматтандыру.


17) Өнертабыс алдындағы чек-парағы

  • Суретке қол қойылды, SBOM жүктелді және релизге байланыстырылды.
  • Келісімшарттар үйлесімді, тесттер жасыл, e2e staging өтті.
  • Көші-қон тексерілді (dry-run), бэкап дайын, қайтару жоспары сипатталған.
  • Дашбордтар/алерталар жаңартылды, SLO-гейттер белсенді.
  • Runbook және Changelog жарияланған, шығару терезелер келісілген.
  • Feature flags прогрессивті белсендіруге теңшелген.
  • Freeze-шектеулер сақталды, on-call дайын.

Қысқаша қорытынды

Сауатты жобаланған staging-paypline релиздерді басқарылатын тәртіпке айналдырады: бірыңғай шаблондар, айқын quality gates, қорғалған жеткізу тізбегі, прогрессивті домалақтау және байқау қауіптерді азайтады және сапа мен бизнес-өлшемдерді бақылауды сақтай отырып, өнімге өзгерістерді шығару уақытын қысқартады.

Contact

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

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

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

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

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

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