Integrazione continua Hudson Setup

In questa serie di tutorial esploreremo un processo raramente discusso (ma molto prezioso) di sviluppo di software che è deludentemente assente nel mondo iOS e mobile: Integrazione continua.


Disponibile anche in questa serie:

  1. Integrazione continua: introduzione in serie
  2. Integrazione continua: installazione Tomcat
  3. Integrazione continua: Hudson Setup
  4. Integrazione continua: creazione script Xcode
  5. Integrazione continua: miglioramenti degli script

Da dove siamo partiti

Nella parte 1, abbiamo discusso il concetto di Continuous Integration e come ci può aiutare nello sviluppo di software più velocemente. Nella parte 2, abbiamo dimostrato come installare "Apache Tomcat", che è il server Web che ospiterà il nostro software CI.


Presentazione di Hudson

Hudson è un server di Continuous Integration open source scritto in Java. È uno dei server CI più popolari utilizzati insieme a Jenkins e Atlassian's Bamboo. Usiamo Hudson perché:

  • È facile da installare e configurare.
  • È facile da usare.
  • È disponibile un robusto supporto per i plug-in.
  • È gratis!

Hudson è attualmente gestito da Oracle, che ha dichiarato che intende continuare a supportare e sviluppare Hudson con la comunità.


Cosa fa Hudson?

Hudson svolge una parte importante del processo di configurazione. Controlla il repository del codice e controlla continuamente gli aggiornamenti. Una volta stabilito che c'è stato un aggiornamento, eseguirà un aggiornamento / pull e avvierà la build. È importante notare che Hudson non è responsabile per l'azione di costruzione stessa. Può solo chiamare uno script (che scriveremo) che farà la costruzione e l'archiviazione. Una volta che lo script è iniziato, Hudson controllerà lo script. Se fallisce, riporta una build rotta.


Passaggio 1: scarica e installa Hudson

La creazione di Hudson è molto semplice. Per prima cosa, vai al sito Web di Hudson all'indirizzo http://hudson-ci.org/, e quindi fare clic sul collegamento per il download per l'ultima versione di produzione (2.1.2 al momento della scrittura) questo scaricherà un file * .war.

Al termine del download, rinomina il file in "hudson.war" e inserisci il file nella cartella "webapps" di Tomcat:

 mv hudson.war / usr / local / tomcat / webapps /

Se il server è attualmente in esecuzione, riavvialo eseguendo lo script di spegnimento, attendi qualche secondo, quindi esegui di nuovo lo script di avvio. Al termine, apri un browser e vai a:

http: // localhost: 8080 / Hudson

Hudson ti dirà che sta installando. Una volta fatto, vedrai la schermata principale di Hudson.



Passaggio 2: crea il tuo progetto

Ora che Hudson è attivo e funzionante, dobbiamo creare un progetto o "lavoro". Questo lavoro riguarderà un progetto che vogliamo aggiungere al nostro CI.

Questo "lavoro" sarà responsabile per il monitoraggio del nostro repository, per rimanere aggiornato e per costruire il progetto. Fare clic sul nuovo lavoro e inserire il nome del progetto / app come nome del lavoro. Seleziona "Crea un progetto software in stile libero" come tipo di lavoro. Questo ci darà la flessibilità di personalizzare il lavoro in base alle nostre esigenze. Fai clic su "ok" quando hai finito.


Successivamente, abbiamo bisogno di configurare le impostazioni del progetto. Le sezioni importanti su questa pagina sono "Fonte
Gestione codice "," Costruisci trigger "e" Costruisci ".


Passaggio 3: impostare la gestione del codice sorgente

In "Gestione codice sorgente", scegliamo quale tipo di repository stiamo usando e vediamo l'URL. In questo esempio, sto usando GIT, ma Subversion segue lo stesso processo.


Tieni presente che il modo in cui ti connetti al tuo repository definirà come viene impostata questa sezione:

HTTPS

È possibile che si verifichi un problema se si utilizza HTTPS (nome utente e password) per connettersi con un repository GIT. Attualmente, Hudson non supporta facilmente l'autenticazione tramite password per GIT.

Per chi usa SVN, è sufficiente inserire l'url del proprio repository e richiedere all'utente un nome utente e una password. Per gli utenti GIT, prova ad inserire dettagli come questo:

 https: // nomeutente: password@serverurl/username/reponame.git

Questo dovrebbe funzionare per te a meno che tu non abbia un simbolo '@' nella tua password, nel qual caso non sarai in grado di usare HTTPS per la tua autenticazione, dovrai usare SSH.

SSH

Se si utilizza SSH (utilizzando chiavi private / pubbliche), sarà necessario assicurarsi di generare una chiave SSH per il proprio server di build e aggiungerla al gestore del repository.

Dovrai anche assicurarti che l'impronta digitale RSA dei server del repository venga aggiunta all'elenco degli host noti prima di iniziare le tue build. Il modo più semplice per farlo è connettersi al server tramite SSH:

 ssh -T [email protected]

Dovresti vedere qualcosa di simile a questo:


Non preoccuparti se vedi un errore come quello sopra dopo aver aggiunto l'impronta digitale RSA alla tua lista di host conosciuti. Questo di solito significa che il server non consente l'accesso alla shell. L'importante è che possiamo connetterci e conosciamo l'identità del server.


Passaggio 4: imposta il trigger di generazione

Dobbiamo dire a Hudson quando vogliamo che inizi la costruzione. Stiamo andando a sondare il repository ogni minuto per vedere se c'è stato un cambiamento.

Seleziona la casella "Poll SCM" e inserisci (come da immagine qui sotto):

* * * * *


Non devi sondarlo ogni minuto. Se vuoi cambiarlo per farlo solo giornalmente o ogni ora, puoi impostarlo anche tu. Tenete presente, però, che più spesso effettuiamo il polling del repository, più sarà continuo il nostro processo.


Passaggio 5: aggiungi il comando di costruzione

Infine, dobbiamo compilare il progetto ed esportarlo dove appropriato. Per fare ciò, dobbiamo aggiungere un passo di costruzione nella sezione di compilazione.

Fai clic sul pulsante "Aggiungi build step" e seleziona "Execute Shell". Aggiungiamo quindi un comando che esegue lo script di compilazione all'interno della directory del progetto (non l'abbiamo ancora aggiunto, lo faremo in seguito).


La stringa "$ Workspace" nell'immagine sopra si riferisce alla directory di lavoro del progetto così come esiste in Hudson. Questo è il livello più alto del tuo repository.

Quando hai finito, fai clic su "Salva". Sarai portato alla schermata di configurazione principale e dopo un secondo o due vedrai il tuo progetto fare la prima build!


Passaggio 6: Guarda la compilazione fallita

Dopo aver salvato le impostazioni del progetto, verrai reindirizzato alla dashboard Lavori. Dopo pochi secondi, vedrai l'avvio di una build. Clicca sulla piccola icona del terminale per vedere l'output della build.


Possiamo vedere cosa sta facendo Hudson. Rileva una modifica nel SCM (in questo caso è la prima connessione) e procede al checkout del codice del repository nello spazio di lavoro. Fa tutto questo con successo, ma fallisce quando tenta di eseguire il nostro script di build.

Possiamo vedere dall'output che non è riuscito perché il file script di build non esiste ancora. Aggiungiamolo al nostro progetto e affidalo al repository.



Passaggio 7: aggiorna il repository

Aggiungi una cartella chiamata 'Scripts' nel livello più alto del tuo repository. Una volta creato, usa un qualsiasi editor di testo per creare un file chiamato "build_script.sh" nella cartella "Scripts" con il seguente testo:

 #! / bin / sh echo "Costruiremo più tardi :)"

Tutto questo script fa stampare una stringa sulla riga di comando. Tratteremo come costruire il tuo prossimo tutorial, ma per ora abbiamo solo bisogno di aggiungere lo script nel repository.

Una volta che il file è stato creato, aggiungilo al tuo repository. Dopo un minuto circa dovresti vedere Hudson iniziare una nuova build. Fare clic sull'icona del terminale per visualizzare l'output.

Andando tutto bene dovresti vedere qualcosa di simile al seguente:


Ora che il file esiste, la build non fallisce. Se guardi da vicino puoi anche vedere l'output del nostro script nella terza riga.


Step 8: Esplora Hudson

Prima di concludere, è importante esplorare alcune funzionalità di Hudson.

Dove Hudson conserva i file

Se vuoi vedere la cartella hudson, guarda sotto la cartella nascosta ".hudson" nella tua cartella utente. Puoi accedervi selezionando go-> vai alla cartella '(nel Finder) e inserendo:

/ Users //.hudson

Qui è dove avviene la magia. Tutto il codice è conservato in una cartella di lavoro sotto il lavoro pertinente. Per il mio progetto (AwesomeApp) il codice verrebbe tenuto in:

/Users/abury/.hudson/jobs/AwesomeApp/Workspace

È importante capire dove si trovano i file nella directory di Hudson. Potresti avere un file ignorato che devi aggiungere manualmente o un problema SVN che devi riparare.

Project Dashboard

Il dashboard del progetto ti consente di visualizzare tutti i tipi di informazioni utili per monitorare lo stato della build. È possibile visualizzare un registro delle modifiche recenti (inclusa una modifica che ha interrotto di recente la build).


È anche possibile esplorare l'area di lavoro dal browser e visualizzare i file attualmente nell'area di lavoro.

Caratteristiche aggiuntive

Hudson può notificare il risultato di una build recente in vari modi. Mantiene un feed RSS che puoi monitorare, inviare e-mail, c'è persino un plugin per farlo parlare! Quando hai un po 'di tempo dai un'occhiata alla configurazione di Hudson per utilizzare queste funzionalità.

La prossima volta

Nel prossimo articolo andremo a scrivere lo script di compilazione che compilerà e firmerà il tuo codice in un file .ipa pronto per essere installato su un iPhone o iPad. Tratteremo i principi di base, i comandi utilizzati e come superare le insidie ​​più comuni. Prenderti la prossima volta!