CI - CD
Continuous Integration, Continuous Deployment
È un insieme di pratiche che si basano su un concetto fondamentale: automazione → nello sviluppo e nel deploy
Non devo preoccuparmi di eseguire i test e vedere se è tutto ok, mi basta committare e parte un processo di test automatico.
CI e CD sono dei concetti: la parte più pratica è implementata dalla pipeline.
Pipeline
È un insieme di istruzioni che vengono eseguite a seconda di eventi o condizioni che andiamo a definire.
Vantaggi
- riduce processi manuali
- rende i processi ripetibili
- nessun intervento manuale
- integrazione di modifiche e rilascio stabile di nuove funzionalità (grazie ai controlli automatici)
Infrastructure data code
Ambienti che posso automatizzare attraverso del codice
Elementi della pipeline
- Pipeline: implementazione della CI/CD
- Stage: raggruppa piu job e crea piu pipeline - macrofasi
- Job: sequenza di azioni
- Executor: ambiente di esecuzione dei job (Docker)
- Runner: infrastruttura che ospita lexecutor
Stage
Stage è il macroelemento della pipeline, definisce la struttura.
All’interno di uno stage sono definiti i job e sono normalmente in sequenza: se uno stage fallisce tutta la pipeline fallisce.
Job
Unità elementare della pipeline. Definisce le operazioni come ‘sequenza di comandi che andiamo a definire nella direttiva “script”. Vengono definite anche le condizioni di esecuzione.
Executor
Ambiente del runner in cui è fisicamente eseguita la pipeline Es. Docker
- k8s
Tipici runner: - singola VM con Docker engine - Cluster k8s
Esempio classico
- Compile: compilazione, inizializzazione, installazione, dipendenze
- Test: unità, integrazione, sistema
- Build: packaging
- Deploy: messa in staging o in produzione
Non eseguire la pipeline quando pusho
git push -o ci.skip