Una pipeline CI/CD è una serie di passaggi orchestrati con la capacità di portare il codice sorgente fino alla produzione. I passaggi includono la creazione, il confezionamento, il test, la convalida, la verifica dell'infrastruttura e l'implementazione in tutti gli ambienti necessari. A seconda delle strutture organizzative e del team, potrebbero essere necessarie più pipeline per raggiungere questo obiettivo. Una pipeline CI/CD può essere attivata da una sorta di evento, come una richiesta pull da un repository di codice sorgente (ad esempio: una modifica del codice), la presenza di un nuovo artefatto in un repository di artefatti o una sorta di pianificazione regolare per corrispondere a una cadenza di rilascio.
A differenza dei linguaggi software in cui puoi adottare approcci e modelli di progettazione con te da un'azienda all'altra, le distribuzioni sono quasi sempre uniche. Molto raramente due applicazioni (e la loro infrastruttura di supporto) sono uguali. Lo sviluppo e la consegna del software sono esercizi iterativi e le pipeline dovrebbero essere eseguite più volte al giorno, tra l'altro per la correzione di bug. Adottando un approccio sistematico con una pipeline CI/CD, i team possono avere una comprensione più chiara di ciò che è necessario per mettere in produzione le loro idee. Poiché le conduzioni sono sistemiche, i colli di bottiglia possono essere facilmente individuati e risolti rispetto a un processo disgiunto guidato dalle persone con più passaggi di distribuzione.
I passaggi che formano una pipeline CI/CD sono sottoinsiemi distinti di attività raggruppate in quella che è nota come fase della pipeline. Le fasi tipiche della pipeline includono:
1) Build - La fase in cui viene compilata l'applicazione.
2) Test - La fase in cui viene testato il codice.
3) Rilascio - La fase in cui l'applicazione viene consegnata al repository.
4) Distribuzione - In questa fase il codice viene distribuito in produzione.
5) Convalida - In questa fase avviene la convalida del software come la presenza di vulnerabilità note (CVE).
Nelle organizzazioni moderne, la pipeline CI/CD è il canale per portare in produzione il codice dello sviluppatore. L'ingegneria del software è un esercizio iterativo e, disponendo di pipeline CI/CD automatizzate, gli ingegneri sono in grado di eseguire le pipeline senza l'intervento umano. Immagina che ogni volta che dovevi eseguire una suite di test o preparare l'infrastruttura per il prossimo ambiente, dovevi coordinare un team esterno. Ciò causerebbe meno iterazioni e prolungherebbe i passaggi per aumentare la fiducia per non sembrare sciocco di fronte ai tuoi coetanei.
Consentendo il self-service, gli sviluppatori possono apprendere il rigore di cui hanno bisogno le loro modifiche più rapidamente e apportare modifiche. Uno degli obiettivi principali dei team DevOps è consentire una maggiore apprendibilità e usabilità delle pipeline. Alcune pipeline guidate da ambienti potrebbero consentire agli sviluppatori di eseguire fino alla fase di pre-produzione, quindi richiedere un'altra pipeline per raggiungere gli ambienti di produzione. Ciò consentirebbe molte iterazioni fino a quando il team di sviluppo non prenderà confidenza con la pipeline. Le pipeline CI/CD completamente automatizzate farebbero un ulteriore passo avanti e automatizzavano completamente la produzione.