2. Cos’è il CI/CD
CI = lo sviluppo avviene attraverso un sistema di versionamento (ambiente
condiviso)
CD = automatizzare e aumentare la velocità delle fasi di build, di test e di
release, e rendere il software disponibile per l’utilizzo
3. Perchè il CICD
Non avere a che fare costantemente con i processi di build e deploy, ma una
volta configurato correttamente il sistema di CICD l’unica operazione che
bisogna fare è quella di integrare il codice.
4. Indice
- Pipelines
- Schedules Pipelines
- Esempio di impatto di un progetto sull’ambiente: modifica di un dato sensibile
- Continuous deployment
- L’esempio dei core-services
- CICD: considerazioni
8. Schedules Pipelines
Concentrare lo sviluppo
nell’automazione:
●
Automatizzare i test
introducendo moduli ad-hoc
●
Sostituire i simulatori manuali
con progetti che fanno l’invio
schedulato di messaggi
10. Esempio: impatto di un progetto sull’ambiente:
modifica di un dato sensibile
11. Esempio di pipeline completa: i
core-services
●I core service sono dei componenti basati su entity mappate alle
tabelle dei nostri db
●Evitano di reimplementare le entity e la persistenza
●Fanno parte di un progetto in Gitlab, e gli artefatti sono gestiti da
un repository manager su una nostra macchina.
●CI/CD: poiche’ sono le basi di molti sviluppi, e’ fondamentale che
vengano rilasciate versioni stabili sull’ambiente
12. Esempio di pipeline completa: i
core-services
●
Chiunque può contribuire allo sviluppo del
progetto. Ogni sviluppatore lavora su un
proprio branch
●
Ogni branch ha una pipeline su cui sono
attive le fasi di build e test
●
Solo la pipeline del branch master (in
questo caso) ha la fase di deploy
●
Il software viene deployato dopo essere
stato mergiato nel master e dopo aver
passato le fasi di build e test
14. Continuous Deployment
Il continuous deployment dovrebbe essere l’obiettivo principale dello sviluppo dei nostri prodotti.
●
Gli errori bloccanti vengono intercettati nelle fasi precedenti al deploy
●
Il deploy non può avvenire se ci sono errori nelle fasi di build e test
●
Il deploy contiene il codice di tutti i contribuenti allo sviluppo (completezza)
●
Il codice viene forzatamente sottoposto a review (collaborazione)
●
Gli ambienti sono utilizzati in modo più efficiente
●
Il software in produzione è sempre aggiornato, stabile, versionato
15. CI: Considerazioni
In base alla dinamica degli sviluppi, la CI/CD facilita lo sviluppatore perchè:
●
Isola il codice da integrare
●
Rende molto più facile il mantenimento di un progetto
●
Nel caso in cui lo sviluppatore deve modificare il codice di un progetto conosce lo stato del
progetto nell’avanzamento dell’ambiente in cui è integrato
●
Evidenzia gli errori all’istante e permette di operare senza dover cercare l’errore
●
Riduce il rischio nel modificare la configurazione delle piattaforme di storage, iot e big-data
●
Riduce il rischio di avere in produzione codice compromesso anticipando il fix di eventuali
errori