GH GambleHub

Staging-pipline e release

1) Perché è necessario staging-pipline

Staging-pipline è il percorso standard dell'artefatto da PR a prodotto con controlli di qualità e protezione predefiniti. Obiettivi:
  • Riproduzione dell'assieme e della release
  • fidbeck veloce e prevedibile;
  • Ridurre al minimo il rischio (disegni progressivi, ficcoflagi, ritiri);
  • conformità alla compilazione e controllo delle modifiche.

2) Flusso di spedizione di riferimento (high-level)

1. PR → controlli automatici (lint, unit, sast, licenze).
2. Build ha → l'immagine/pacchetto, la firma e la SBOM.
3. Test on Ephemeral si avvale-ambiente per-PR.

4. Merge → Staging:
  • depistaggio immagine
  • Test di contrattazione, integrazione, e2e;
  • DAST/IAST, regressione, smoke di carico;
  • UAT/QA manuali se necessario.
  • 5. Release Candidate (RC) → freeze window → Prod (canary/blue-green).
  • 6. Check-up post-deploy e automatico SLO/errore budget.
  • 7. Runbook/Changelog chiude il lancio e la retrospettiva.

3) Modello di pipline YAML standard (estratto)

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 e criteri di preparazione (Quality Gates)

Codice e sicurezza: lenti, rivestimento, SAST/SCA, criteri di dipendenza, assenza di critical/high.
Contratti: compatibilità di diagrammi (API/eventi), Check-Up/Buf.
Test: unit/integration/e2e p-soglia di passaggio, stabilità (flake-rate).
Smoke carico: p95/p99 entro il budget, nessun degrado.
DAST/IAST: nessun findings critico, script pen-test per percorsi sensibili.
Osservabilità: dashboard/alert «as code» aggiornati, runbooks applicati.
AB/UAT: conferma nelle finestre di rilascio (se richiesto da regolazione/business).


5) Strategie di lancio

Canary è un aumento progressivo della quota di traffico (5%, 25%, 50%, 100%), roll-forward/rollback automatico per SLO e anomalie.
Blue-Green - ambienti paralleli interruttore istantaneo, semplice ripristino.
Feature Flags - Accensione logica senza redeploy; "dark launch" e "A/B.
Shadow/Traffic Mirroring è una prova passiva del traffico sulla nuova versione senza influire sugli utenti.
Ring Deployments - onde per regione/tenente.


6) Rimborsi e criteri di sicurezza dei comunicati

Slittamento automatico per trigger: Altezza error-rate, p95/TTFB superiore alla soglia, altezza 5xx/timeout, picco DLQ.
Reimpostazione manuale: comando «/rollback <service> <sha> »in chat-bot, un pulsante nella console di output.
Freeze windows: rilascio vietato per eventi critici (tornei/partite di punta).
Changelog & Release Note - Generazione da PR, tag SemVer, componenti, migrazioni.


7) Migrazioni database e compatibilità

Expand → Migrate → Contract:

1. Aggiungere campi/indici compatibili

2. l'applicazione (legge/scrive in entrambi i circuiti);

3. Migrazione dei dati in background

4. Eliminare la vecchia.

Gli schemi sono versionati, le migrazioni idempotent, dry-run allo staging.

Protect distruttive SQL: richiere flag/approval, backup automatici e plan-check.


8) Ficcoflagi e attivazione progressiva

Separare le bandiere ops (per un uso sicuro) e product.
Inclusione di pubblico: percentuale, geo, tenante, ruolo.
Metriche di flag: effetto sulla conversione, latency, errori.
Se c'è un problema, l'allineamento della bandiera è più veloce del ripristino.


9) Osservabilità come parte del lancio

Trade: trace _ id, da gateway a database/code; Confronto tra versioni vecchie e nuove.
Metriche: p50/p95/p99, error-rate, RPS, saturation, DLQ, retrai, Time-to-Wallet/Business KPI.
Loghi: strutturato, maschera PII, correlazione'richiest _ id '.
Budget SLO, pagine urgenti on-call, rilascio auto.


10) Sicurezza della catena di fornitura (supply chain)

SBOM per ogni biglietto, memorizzazione e riferimento al tag di rilascio.
Etichette di aspetto (cosign), convalida del cluster.
La certificazione SLSA è l'origine provata del manufatto.
Policy-as-Code (OPA/Conftest): deny-by-default per le PR di infrastruttura.
I segreti sono solo da KMS, token a breve vita, rotazioni in pipline.


11) Controllo delle modifiche e dei processi

RFC-CRQ-CAV: cambio di comportamento/contratto documentato in anticipo.
Release Calendar: finestre visibili per prodotto/regione/comando.
Runbooks - Per ogni componente, procedure di attivazione/ripristino/diagnostica.
Postmortem/Retro - Dopo una release significativa, analisi e azioni.


12) Profili di test di staging

Appalti (API/Events) - Blocca le modifiche incompatibili.
Integrazione/e2e - Script di deposito end-end, KYC, output.
Smoke di carico: picchi rappresentativi teniamo d'occhio i limiti delle risorse.
Script di caos: disattivazione del provider, aumento della latitanza, flapping di rete.
Monitoraggio sintetico: transazioni di prova pianificate.


13) Esempio Makefile obiettivi di rilascio (frammento)

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) Ruoli e responsabilità

Dave/Team: qualità del codice, test, migrazioni, runbooks.
QA: script UAT/regolution, controllo qualità su gates.
SRE/Piattaforma: affidabilità, osservabilità, policy.
Release Manager: calendario, finestre, CAV, soluzione finale.
Sicurezza: SAST/DAST/SCA, supply-chain, politica dei segreti.


15) Modello di rilascio maturità

1. Base - controlli manuali, rilasci rari, rimborsi difficili.
2. Avanzato - standard CI/CD, circuito staging, canary/blue-green, frequenti rilasci.
3. Esperti: invio progressivo per tenanti/regioni, feature flags-first, policy-as-code, autolesionismo SLO, tracciabilità completa e SLSA.


16) Road map di implementazione

M0-M1 (MVP): modello di pipline, build + sign + SBOM, staging-deposito, test di base e gates.
M2-M3: canary/blue-green, prevaricazione per-PR, test di contratto, DAST, checks synthetic.
M4-M6: feature flags piattaforma, shadow traffic, policy-as-code, ripristino automatico, release calendar + CAV-workflow.
M6 +: ring-deployments per regione, certificazione SLSA e admissione rigorosa, completa automazione runbooks.


17) Foglio di assegno prima del rilascio

  • Immagine firmata, SBOM scaricata e collegata al lancio.
  • I contratti sono compatibili, i test sono verdi, e2e hanno superato lo staging.
  • Migrazioni verificate (dry-run), bacap pronto, piano di ripristino descritto.
  • I dashboard/alert sono aggiornati, i gate SLO sono attivi.
  • Runbook e Changelog sono pubblicati e le finestre di rilascio sono concordate.
  • Le feature flags sono configurate per attivare progressivamente.
  • I vincoli di freeze sono stati rispettati, on-call è pronto.

Output breve

La taging pipline ben progettata trasforma le release in una routine controllata: modelli unificati, quality gates chiari, catena di fornitura protetta, discovery progressivo e osservabilità riducono i rischi e riducono i tempi di acquisizione delle modifiche alla produzione, mantenendo il controllo della qualità e delle metriche aziendali.

Contact

Mettiti in contatto

Scrivici per qualsiasi domanda o richiesta di supporto.Siamo sempre pronti ad aiutarti!

Avvia integrazione

L’Email è obbligatoria. Telegram o WhatsApp — opzionali.

Il tuo nome opzionale
Email opzionale
Oggetto opzionale
Messaggio opzionale
Telegram opzionale
@
Se indichi Telegram — ti risponderemo anche lì, oltre che via Email.
WhatsApp opzionale
Formato: +prefisso internazionale e numero (ad es. +39XXXXXXXXX).

Cliccando sul pulsante, acconsenti al trattamento dei dati.