GH GambleHub

Staging-пайплайни і релізи

1) Навіщо потрібен staging-пайплайн

Staging-пайплайн - це стандартизований шлях артефакту від 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) Релізні стратегії

Canary - поступове збільшення частки трафіку (5% → 25% → 50% → 100%), автоматичний roll-forward/rollback по SLO і аномаліям.
Blue-Green - паралельні середовища; миттєвий перемикач, простий відкат.
Feature Flags - логічне включення фіч без redeploy; можливість «dark launch» і A/B.
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): deny-by-default для інфраструктурних PR.
Секрети: тільки з 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-деплою, базові тести і gates.
M2–M3: canary/blue-green, прев'ю per-PR, контракт-тести, DAST, synthetic checks.
M4–M6: feature flags платформа, shadow traffic, policy-as-code, автовідкат, release calendar + CAB-воркфлоу.
M6+: ring-deployments по регіонах, SLSA-атестації і строгий admission, повна автоматизація runbooks.


17) Чек-лист перед прод-релізом

  • Образ підписаний, SBOM завантажений і прив'язаний до релізу.
  • Контракти сумісні, тести зелені, e2e пройшли на staging.
  • Міграції перевірені (dry-run), бекап готовий, план відкату описаний.
  • Дашборди/алерти оновлені, SLO-гейти активні.
  • Runbook і Changelog опубліковані, вікна релізу узгоджені.
  • Feature flags налаштовані на прогресивну активацію.
  • Freeze-обмеження дотримані, on-call готовий.

Короткий висновок

Грамотно спроектований staging-пайплайн перетворює релізи в керовану рутину: єдині шаблони, чіткі quality gates, захищена ланцюжок поставки, прогресивні розкатки і спостережуваність знижують ризик і скорочують час виведення змін в продакшен, зберігаючи контроль над якістю і бізнес-метриками.

Contact

Зв’яжіться з нами

Звертайтеся з будь-яких питань або за підтримкою.Ми завжди готові допомогти!

Розпочати інтеграцію

Email — обов’язковий. Telegram або WhatsApp — за бажанням.

Ваше ім’я необов’язково
Email необов’язково
Тема необов’язково
Повідомлення необов’язково
Telegram необов’язково
@
Якщо ви вкажете Telegram — ми відповімо й там, додатково до Email.
WhatsApp необов’язково
Формат: +код країни та номер (наприклад, +380XXXXXXXXX).

Натискаючи кнопку, ви погоджуєтесь на обробку даних.