Introduzione
La Continuous Integration nel mondo dello sviluppo software moderno è una pratica sempre più diffusa e praticata, che permette di ridurre la possibilità di bug e favorisce la corretta integrazione dei componenti sviluppati da molti programmatori, specie in progetti Software molto grandi.
Travis CI
Un’attore fondamentale della CI è proprio il server che esegue l’integrazione, ce ne sono molti, quelli più conosciuti sono sicuramente Jenkins, Hudson CI ed appunto Travis CI.
Ma cosa fa effettivamente un server CI.
Un server CI esegue la build di un progetto Software, quindi di solito, preleva l’ultima versione del progetto da un sistema di Version Control, come SVN o GIT ed esegue uno script che può spingersi fino al deploy del software in produzione oppure creare semplicemente dei pacchetti binari pronti per essere installati su una o più macchine di produzione.
Utilizzare Travis CI con Github
Una funzionalità particolare che ho scoperto in questi ultimi giorni utilizzando Github come repository GIT per una serie di progetti, è la possibilità di integrare Travis con Github ed eseguire quindi una CI anche per progetti ospitati dal celebre servizio.
Ovviamente in questo caso non si parla di una fase di deploy ma vengono solo eseguiti una serie di test, in modo da verificare che la build del progetto sia corretta e non ci siano errori presenti, a seguito delle commit effettuate.
Come fare
Registrazione a Travis
La prima cosa da fare è andare sulla Homepage del servizio e registrarsi con le proprie credenziali Github.
Fatto questo è possibile tramite il sito stesso scegliere quali repository presenti nel proprio account, vogliamo collegare al servizio Travis, a questo punto andiamo ad inserire il file di configurazione di Travis nel nostro repository Github.
Integrazione con Github
Iniziare l’integrazione è davvero facile basta infatti inserire nella root del proprio progetto un file con nome:
.travis.yml
All’interno di questo file va specificato il linguaggio con il quale stiamo sviluppando.
Mi spiego meglio con un’esempio:
language:java
questa è la configurazione automatica, che come ovvio che sia da moltissime cose per scontate in pieno stile convention over configuration.
Le convenzioni per quanto rigurda questo caso specifico con linguaggio Java e che il progetto utilizzi una di queste tecnologie:
Oracle JDK 7 (default), Oracle JDK 8, OpenJDK 6, OpenJDK 7, Gradle 2.0, Maven 3.2 and Ant 1.8
in automatico Travis riconoscerà la JDK usata ed eseguirà i test cercando i file di configurazione di uno dei principali package manager del mondo Java .
Se trova infatti il file build.gradle
, il progetto utilizza Gradle quindi Travis lancerà in automatico il comando:
gradle check
se trova il file pom.xml
ma non il build.gradle
è un progetto che utilizza Maven quindi il comando è:
mvn test
altrimenti se non trova nessuno dei due file utilizzerà Apache Ant e lancerà il comando:
ant test
Tutto questo con una sola riga scritta nel file .travis.yml
.
Comunque è sempre buona prassi essere più espliciti possibili specificando la JDK e lo script con il quale eseguire i test per determinare se la build è corretta o meno.
Nel mio caso infatti avendo un progetto sviluppato con JDK 1.8 e Maven ho creato un file fatto in questo modo:
language: java
jdk:
- oraclejdk8
script: cd ../service && mvn test
interessante vedere come tramite parametro script
è possibile lanciare dei comandi per testare la build. Il processo di test partirà subito dopo aver effettuato una commit.
Un’ulteriore cosa opzionale che si può aggiungere al proprio progetto Github è il link nel file README.md
all’immagine relativa allo stato, dell’ultima build testata da Travis, in modo da vedere a colpo d’occhio lo stato del repository.
Qui un’esempio di quello che intendo.
Conclusioni
Quello mostrato è un’esempio molto semplice e limitato per di più legato al mondo Java.
Travis permette di gestire e testare molte tecnologie, trovate comunque molti esempi e documentazione nel sito di Travis.
Stay Tuned!
Image Courtesy of Travis CI
Source: antonioscatoloni.site