Integrazione continua introduzione in serie

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.

In breve, Continuous Integration (CI) consente di accelerare il processo di sviluppo e rilascio controllando costantemente il repository del codice per i problemi di build e automatizzando una serie di procedure che altrimenti dovresti eseguire tu stesso.

Dopo aver letto questo tutorial sarai in grado di configurare da zero un server automatico che fornirà tutti i vantaggi di cui sopra (più alcuni altri). Nello specifico, tratteremo:

  1. La teoria dietro l'integrazione continua.
  2. Installazione del server Web Tomcat Apache. Questo sarà usato per eseguire il software CI.
  3. Installazione di Hudson. Questo è il software CI che monitorerà il repository e avvia il
    costruire.
  4. Scrivere lo script di bash build. Passeremo attraverso le basi di Bash e come compilare il nostro progetto Xcode dalla riga di comando.
  5. Estensione dello script di build in vari modi, inclusa la distribuzione automatica.

Conoscenza richiesta

Sebbene andremo nei dettagli su tutti gli aspetti di come configurare l'elemento della configurazione, si presume che non si abbia una conoscenza preliminare dell'amministrazione del server, degli script di bash o delle procedure CI. Detto questo, ci si aspetta che tu abbia una conoscenza generale di Xcode e delle build di archiviazione e che tu capisca (e abbia accesso a) un server di controllo del codice sorgente.

Se non sei già al punto in cui utilizzi un sistema di controllo della versione come Git o SVN per la gestione del codice, questo tutorial sarà un po 'fuori dalla tua zona di comfort. Per ulteriori informazioni sul controllo del codice sorgente e su come può avvantaggiarti, ti consiglio vivamente di iscriverti a GitHub. Offrono repository pubblici gratuiti e hanno un ottimo tutorial per i nuovi utenti su come impostare e utilizzare Git come VCS.


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

Cos'è l'integrazione continua?

Come può testimoniare chiunque abbia lavorato in un team di sviluppatori, gestire archivi di codici e conflitti di codice può essere un enorme problema. Gli sviluppatori possono trascorrere diverse ore dopo la fusione e la gestione dei conflitti.

Oltre a lavorare con i conflitti, la creazione manuale di app per il testing o la distribuzione aziendale può richiedere molto tempo. Qualcuno deve essere responsabile della conservazione del repository, della gestione dei certificati dello sviluppatore e dei profili di provisioning, dell'archiviazione del codice e del caricamento del file IPA su un server per la distribuzione.

A causa delle complessità coinvolte in queste procedure, gli sviluppatori a volte detestano il commit e costruiscono il loro codice e riusciranno a creare una build del progetto completo solo una o due volte alla settimana.

CI consente di avviare automaticamente le build dopo ogni commit nel repository. Ciò consente di identificare e risolvere in modo rapido ed efficace gli errori nel codice e nei conflitti. Sebbene ciò sia utile, la funzione di gran lunga più utile che è possibile ottenere dalla configurazione di un server CI è l'automazione e la distribuzione delle nostre build. Immagina se tutto quello che dovevi fare fosse digitare svn commit -m "Risolto il bug dell'ID cliente" e 30 secondi dopo la build era seduta su un sito Web in attesa di essere scaricata da un tester. Configurare un CI può farlo accadere!


Come funziona

Affinché la CI funzioni efficacemente, gli sviluppatori devono impegnarsi presto e impegnarsi spesso (almeno una volta al giorno). Il server CI esegue continuamente il polling del repository per verificare se è presente un aggiornamento. Se rileva una modifica, inizierà a costruire il progetto e ad eseguire le attività associate.


Se la costruzione ha esito positivo, al team viene inviata una notifica della build andata a buon fine. Se la compilazione non ha esito positivo, al team viene inviata una notifica di:

  • Chi sul team ha rotto la build
  • Quali modifiche hanno causato la rottura della build

Nel caso di una build rotta, il team può valutare rapidamente come si è rotta la build e risolvere il problema ei problemi che necessitano di essere risolti sono piccoli e facili da gestire perché ci stiamo impegnando ogni giorno invece che ogni settimana.


I principali vantaggi dell'integrazione continua

  • I problemi con la build sono identificati in anticipo.
  • I problemi identificati sono in genere piccoli problemi facili da risolvere.
  • La costruzione, la firma e la distribuzione automatizzate dell'app consentono di risparmiare tempo.
  • Accesso costante alla build 'più recente' per i tester.
  • I test unitari possono essere eseguiti su ogni build, consentendo agli sviluppatori di rilevare problemi funzionali e errori di compilazione.

Il test delle unità è un mondo su se stesso e sfortunatamente non sarà trattato in questo tutorial. Vi incoraggio a leggere sull'uso dei test unitari non solo come parte del vostro CI, ma come parte del vostro processo di sviluppo.


I principali svantaggi dell'integrazione continua

CI non è certamente per tutti. Può essere necessario molto tempo per configurare un server in base alle proprie esigenze. Il software server CI viene installato e configurato al meglio su una macchina separata rispetto a quella utilizzata per lo sviluppo e i requisiti hardware. Ciò significa costi aggiuntivi per l'hardware.


La prossima volta

Nel prossimo articolo ci sporcheremo le mani configurando il server web Tomcat. Tratteremo i requisiti di sistema, come installarlo e avviare / arrestare il server. Prenderti la prossima volta!