Per CI/CD (Continuous Integration/Continuous Delivery) si intende un approccio allo sviluppo e alla distribuzione di software volto a creare continuità tra la pianificazione di funzionalità e bugfix, la loro implementazione e la distribuzione di nuove release.
Il flusso CI/CD si basa sulla necessità di implementare e distribuire in modo programmatico e agile nuove features su un progetto software. Questo si realizza, nella pratica, nella stesura di script che automatizzano le fasi tipiche del rilascio della nuova release di un’applicazione.
Tra queste fasi ne identifichiamo tre fondamentali e comuni a quasi tutte le pipeline CI/CD:
Il flusso CI/CD ha un grosso impatto non solo sulle procedure di rilascio di un progetto, ma anche sul suo sviluppo. Le pipeline, infatti, sono oggi integrate in modo maturo nella maggior parte delle piattaforme di version control (GitLab, GitHub, ecc) e permettono di automatizzare e standardizzare i controlli sul codice che devono essere effettuati a fronte di ogni contribuzione.
Per comprendere l’importanza e il valore dell’approccio CI/CD basti pensare ad un flusso operativo che non la contempli: senza una pipeline a disposizione, a fronte di ogni cambiamento nel codice di un’applicazione sarebbe necessario che una persona preposta si occupi di eseguire manualmente i test, preparare l’applicazione alla distribuzione e infine distribuirla in ambiente di produzione.
Questi passaggi, specie su progetti di larga scala, possono essere estremamente onerosi, proni all’errore e stressanti. Automatizzare il processo permette allo stesso tempo di assumere pieno controllo del rilascio del proprio progetto e di delegare questi task.
Il costo è soltanto costituito dal tempo necessario alla progettazione e al mantenimento della pipeline, che nella maggior parte dei casi risulta molto meno dispendioso rispetto alla sua controparte manuale.