Cos’è, importanza e fasi della Continuous Integration nello sviluppo software

Cos’è, importanza e fasi della Continuous Integration nello sviluppo software

Nell’ingegneria del software, la pratica dell’integrazione continua o in inglese Continuous Integration (CI), consiste nell’allineare frequentemente le varie parti di un progetto nell’ambiente di lavoro condiviso. Questo vuol dire che lo sviluppatore è spinto a caricare il proprio codice prodotto all’interno del SCM più volte al giorno. Attraverso software specializzati, verranno in automatico eseguiti la build del codice ed i test di unità, test d’integrazione e l’analisi statica del codice.
La Continuous Integration è nata soprattutto per trovare una soluzione al cosiddetto Integration Hell, ovvero una situazione in cui gli sviluppatori eseguono troppo raramente la build del prodotto, accumulando piccoli problemi che rendono infine l’esecuzione della build estremamente lunga e difficile da correggere.

La presenza dei test è fondamentale, per questo CI viene spesso eseguita insieme alla pratica TDD (test-driven development). I due tipi di test, quelli di unità e di integrazione, hanno due scopi diversi: il primo ha lo scopo di analizzare una singola funzionalità del software presa individualmente e sarà dunque veloce nella sua esecuzione, mentre il secondo ha lo scopo di verificare se le “parti” sviluppate dai singoli sviluppatori dialogano correttamente. I test d’integrazione solitamente sono più lenti dei test di unità, ma è necessario che non richiedano troppo tempo per essere completati, altrimenti lo sviluppatore sarà scoraggiato nell’eseguirli. I test d’integrazione inoltre sono adatti per i progetti con un’architettura a microservizi, in cui i servizi da integrare sono molti e possono essere sviluppati in parallelo.
Il beneficio di CI sta nel possedere sempre un prodotto aggiornato, funzionante e testato. Pur di mantenere la correttezza del codice che è a disposizione di tutto il team, non è possibile lasciare il lavoro con una build fallita. In tal caso ci sono due opzioni:

  • Cercare di risolvere il problema nel minor tempo possibile;
  • Tornare all’ultima versione funzionante del software.

Nella pratica, l’integrazione continua consiste nei seguenti passaggi:

  1. Sviluppo del codice in locale;
  2. Esecuzione della build in locale. Se questa non dovesse concludersi correttamente tornare al punto precedente;
  3. Verificare, attraverso lo strumento che esegue la build in remoto del codice nel SCM, se è in esecuzione il processo di build. In caso affermativo, attendere che questa finisca;
  4. Eseguire un’azione di push all’interno del SCM utilizzato. In automatico dovrebbe partire il processo di build in remoto, se questo dovesse fallire, tornare al primo punto.

Per rendere ancora più efficace l’esecuzione dei test, è buona pratica scrivere degli script di configurazione che emulino il più possibile gli ambienti finali di utilizzo del software, in modo tale da non dover risolvere problemi di compatibilità al momento della consegna del prodotto.

Cos'è, importanza e fasi della Continuous Integration nello sviluppo software

Infine, gli strumenti più utilizzati per effettuare CI (soprattutto nelle aziende) sono:

  1. Jenkins
  2. GitLab CI
  3. Circle CI
  4. Bamboo
  5. TeamCity

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *