Antonio Scatoloni     About     Archive     Tags     Feed

Continuous Integration con Travis CI

Jekyll

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 software sviluppati da molti programmatori, specie in progetti 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.

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.

Jekyll

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 Visit Lego Liberty

comments powered by Disqus