Integrazione continua e distribuzione continua

Completato

Prima di modificare o distribuire l'infrastruttura aziendale, comprendere cosa si intende creare esplorando i concetti alla base dell'integrazione continua (CI) e della distribuzione continua (CD). In questa unità vengono fornite informazioni sulle pipeline CI/CD e su come applicare CI e CD con GitHub Actions.

CI e CD sono procedure operative che introducono l'automazione continua e il monitoraggio in tutte le fasi di sviluppo, test e distribuzione del software. I team di sviluppo usano CI e CD per essere più produttivi e contribuire a ridurre i problemi che possono verificarsi durante l'integrazione di nuovo codice in una codebase esistente.

Integrazione continua

Prima dello sviluppo di strumenti CI/CD, l'intero processo develop-test-deploy-test era manuale. Sono disponibili gruppi di test automatizzati, ma devono essere eseguiti manualmente o in orari pianificati dai team esperti.

Una delle sfide più significative affrontate dagli sviluppatori di software è stata la giornata di unione. Il giorno di merge si è verificato perché la maggior parte dei team di sviluppo software ha lavorato sullo stesso codice in rami di controllo del codice sorgente diversi con test minimi. Al giorno dell'unione, tutte le modifiche al codice sono state integrate nel ramo principale. Di conseguenza, un intero giorno doveva essere dedicato alla risoluzione dei problemi di integrazione man mano che i rami dei membri del team si sono uniti e intersecati nel ramo principale.

Un principio CI critico consiste nel unire tutte le nuove modifiche nel ramo principale il più spesso possibile. L'unione continua delle modifiche consente di evitare il giorno di unione che si è verificato quando molti sviluppatori hanno combinato le modifiche contemporaneamente.

L'integrazione continua richiede che i team implementino e integrano di frequente le modifiche più piccole nel codice. L'implementazione dell'integrazione continua significa che i team possono testare, compilare, distribuire e quindi testare di nuovo nell'ambiente di produzione. L'obiettivo dell'integrazione continua è rilevare ed evitare problemi di produzione causati dalle modifiche al codice prima che possano influire sul ramo di codice principale o distribuirlo ai clienti.

Distribuzione e recapito continuo

Il recapito continuo riprende dove termina l'integrazione continua e automatizza il processo di recapito nell'ambiente dell'infrastruttura selezionato. È possibile usare il recapito continuo per rilasciare le modifiche in modo rapido e sostenibile. Dopo aver usato il recapito continuo, si decide in anticipo se distribuire le modifiche giornaliere, settimanali, mensili o in un'altra pianificazione adatta alle esigenze aziendali.

La distribuzione continua va oltre un passaggio rilasciando automaticamente le modifiche che passano tutte le fasi della pipeline CI/CD all'ambiente di produzione. La distribuzione continua è uno dei processi più avanzati nello sviluppo software e richiede codice che testa tutti gli aspetti della funzionalità dell'applicazione senza intervento umano.

Pipeline CI/CD

Una pipeline comprende i processi collettivi eseguiti quando si verifica un evento specificato. Un numero elevato di eventi fa parte dello sviluppo software e una pipeline CI/CD deve supportare tutti gli eventi correlati. Quando un evento attiva la pipeline, vengono attivati tutti i listener per questo evento e viene avviata la prima fase del processo.

Una pipeline CI/CD viene eseguita quando viene attivata una nuova modifica del codice. Nella maggior parte dei casi il processo inizia con la clonazione o il download del codice sorgente. Quindi, il passaggio successivo viene attivato e così via.

Ogni volta che una modifica del codice attiva un'esecuzione CI/CD, tutti i passaggi della pipeline vengono eseguiti. Se si verifica un errore in un passaggio, la pipeline si arresta. I flussi di lavoro possono contenere salti logici in modo che alcune fasi non vengano eseguite in determinate condizioni, ma la pipeline complessiva continua a essere eseguita.

Azioni di GitHub

GitHub Actions supporta tutti gli eventi correlati a GitHub e automatizza la pipeline CI/CD in questo modulo. In GitHub Actions ogni passaggio definisce le azioni in JavaScript o usando un contenitore Docker. Le azioni sono facili da creare e formano i blocchi predefiniti dei passaggi della pipeline.

È possibile usare GitHub Actions per integrare facilmente tutto il codice ospitato in GitHub con un flusso di lavoro di automazione. Il flusso di lavoro gestisce più attività per integrare il codice in diversi ambienti.

GitHub Actions è un provider diffuso per le pipeline CI/CD a causa del modello open source. Poiché i flussi di lavoro sono open source, vengono archiviati nei repository disponibili per chiunque nella piattaforma. Gli utenti di GitHub possono usare le azioni dell'altro o creare azioni personalizzate senza installare o configurare altro.

La possibilità di condividere azioni tra gli utenti significa che non è necessario riscrivere codice o fasi ripetute, ma può usare o personalizzare le azioni esistenti. Nelle unità successive si usa GitHub Actions in un contenitore Docker per definire una pipeline CI/CD che implementa la distribuzione continua di un'applicazione.

Verificare le conoscenze

1.

Qual è la differenza tra CI e CD?

2.

Che cos'è una pipeline di integrazione continua?