Nell’ingegneria del software esiste una pratica chiamata definita “Continuous Integration” (di seguito abbreviato in C.I.). Questa metodologia di sviluppo del software è definito attraverso l’utilizzo di diversi strumenti per la gestione del codice.
Prendiamo in esame lo sviluppo di un software Java, ad esempio quello reperibile a questo indirizzo. Già questo elemento fa parte del concetto di C.I., ovvero un repository GIT di riferimento del progetto da sviluppare. Nello specifico stiamo utilizzando GitHub, ma in casa o in un’azienda (piccola, media o grande che sia) è possibile installare un software dedicato al cosiddetto versioning del codice.
Il versioning del codice è alla base del C.I. ed esistono diversi strumenti. Quelli maggiormente utilizzati sono:
- GIT (già menzionato prima e da me preferito per il funzionamento e maggiormente utilizzato)
- SVN Subversion
Il versioning del codice sorgente è fondamentale soprattutto se si lavora in un Team. Più uno strumento funziona bene e meno problemi si hanno nello sviluppo. Utilizzando SVN è possibile (più frequentemente rispetto a GIT) incappare in problemi di sovrascrittura del codice perdendo le modifiche fatte fino a quel momento. GIT permette un controllo maggiore nel versioning del codice gestendo i conflitti di sovrascrittura del codice controllando, quindi, le azioni da eseguire (sovrascrittura o utilizzo di una versione del codice committato in fase di aggiornamento), almeno questo secondo la mia esperienza.
Altra peculiarità di GIT è la possibilità di “committare localmente”. Quando si sviluppa a step è possibile definire una funzionalità e committarla localmente, una volta conclusi tutti gli sviluppi si esegue il “push” del codice nel repository di riferimento (ad esempio quello linkato precedentemente.
GIT permette anche di sviluppare secondo un principio chiamato GIT Flow . Utilizzando i branch si sviluppano new feature o new release seguendo passi ben definiti in questo link
Una volta versionato il codice dobbiamo compilarlo, occorre gestire le versioni anche del compilato. Uno strumento come Jenkins è proprio quello che serve. Integrando Git con Jenkins possiamo far compilare a questo strumento una versione del codice con determinate modifiche ed escludendo un lavoro che si sta facendo su un’altra parte del codice.
Ultimo strumento è Artifactory (o JFrog) che permette la gestione dei pacchetti da utilizzare, ad esempio, attraverso maven.
Di seguito una figura che rappresenta quanto scritto con le comunicazioni tra i software menzionati (ed anche altri):