Blocco B Β· La filiera automatizzata β€” Modulo 11 di 16

Deploy automatico in staging

Obiettivi di oggi

Anatomia del server di esercizio

/srv/pratiche/
β”œβ”€β”€ compose.staging.yaml    # image: dal registry (MAI build:)
β”œβ”€β”€ .env                    # config e segreti, permessi 600 (sistemisti)
β”œβ”€β”€ deploy.sh               # pull + up + smoke test
└── backup/

Il job di deploy

deploy-staging:
  environment: { name: staging }
  rules: [{ if: $CI_COMMIT_BRANCH == "main" }]
  script:
    - scp deploy/* utente@staging:/srv/pratiche/
    - ssh utente@staging "cd /srv/pratiche &&
        TAG=sha-$CI_COMMIT_SHORT_SHA ./deploy.sh"

Lo smoke test non Γ¨ opzionale

for i in $(seq 1 20); do
  curl -fsS http://localhost:8080/health && exit 0
  sleep 3
done
exit 1     # deploy FALLITO β†’ pipeline rossa β†’ tutti lo vedono

Un deploy senza verifica Γ¨ una speranza. Il job fallisce se il servizio non risponde.

Laboratorio (2h)

  1. compose.staging.yaml + deploy.sh; job deploy-staging
  2. Merge su main β†’ osserva lo staging aggiornarsi da solo
  3. Sabota lo staging β†’ lo smoke test boccia il deploy

Riepilogo e prossimo passo

← portale Β· frecce/click per navigare Β· F = schermo intero Β· Ctrl+P = PDF