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.
- 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.