Questa è la seconda parte di una serie sponsorizzata su Codeship, il continuo servizio di integrazione e consegna sicuro basato su cloud. Se hai perso la prima parte, puoi tornare indietro e leggilo qui.
Codeship è un servizio di consegna continua ospitato che si concentra su velocità, affidabilità e semplicità. In questo tutorial, rivedrò le basi di Codeship dalla prima parte e poi passerò attraverso la distribuzione del codice.
Per prima cosa, mostrerò come usare Codeship per la distribuzione in AWS CodeDeploy. Quindi, esploreremo il nuovo di Codeship ParallelCI, che velocizza i test e le build delegando le attività in parallelo a diverse macchine virtuali. Introdurrò anche l'API Codeship, utile se desideri un controllo più automatico sui servizi di Codeship.
Iniziamo con una revisione di ciò che fa Codeship.
Con Codeship, si configura il servizio per creare, testare e distribuire l'applicazione dal gestore codice sorgente alle piattaforme di staging e produzione di propria scelta. Il servizio offre una varietà di potenti opzioni di configurazione. Attualmente, Codeship è integrato con i noti gestori di codice sorgente GitHub e Bitbucket. Supporta una varietà di linguaggi di programmazione (Ruby on Rails, Node.js, PHP, Java, Go, Dart, ecc.) E piattaforme di distribuzione (Amazon Web Services, Heroku, Google App Engine, ecc.)
La pratica dell'integrazione continua prevede ripetuti test automatici e la fusione di codice con le notifiche per avvisare gli sviluppatori di problemi nel loro codice in tempo reale. Codeship combina questo con la pratica della consegna continua, che prevede la normale distribuzione del codice una volta che le modifiche hanno superato i test automatici.
In sostanza, quando si invia il codice a GitHub, Codeship ricostruisce l'applicazione sui propri server sicuri e esegue i test automatici. Se i test falliscono, avvisa il team di sviluppo tramite e-mail o integrazione con servizi noti come Slack, HipChat, ecc. Se i test superano, Codeship segue la pipeline definita per spostare il codice nei server di staging o di produzione come specificato.
Lavorare con un servizio come Codeship può minimizzare i fallout dai bug, velocizzare il loro rilevamento e rendere il tuo team più confortevole e competente nel rilasciare regolarmente miglioramenti incrementali alla tua piattaforma, sperando di migliorare la tua reattività ai tuoi clienti e al tuo mercato.
Codeship aiuta il tuo team a scrivere e distribuire il proprio codice con maggiore sicurezza.
Recentemente, Codeship ha annunciato una nuova entusiasmante funzione per velocizzare i test. Si chiama ParallelCI.
ParallelCI ti consente di suddividere i comandi di prova su più macchine virtuali di creazione (VM) per accelerare i tempi di costruzione. Eseguendo i test in parallelo, Codeship aumenta la produttività del tuo team con build più veloci. Puoi usare ParallelCI per configurare il tuo progetto con un massimo di dieci pipeline parallele per ottenere un aumento della velocità fino a 10 volte per la tua suite di test.
Puoi leggere i case study dei clienti Codeship Bannerman e LendingCrowd, che hanno ridotto i tempi di prova rispettivamente del 30% e del 50%.
Come promemoria, parteciperò alle discussioni di seguito. Se hai una domanda o un suggerimento sull'argomento, per favore pubblica un commento qui sotto. Puoi anche raggiungermi su Twitter @reifman o mandarmi un'email direttamente.
Ora, iniziamo ad esplorare le funzionalità di distribuzione di Codeship in modo più dettagliato.
Scegli cosa fa Codeship con il tuo codice dopo il passaggio dei test. Ad esempio, forse aggiorni il tuo server di staging per ulteriori test, o forse scarichi tutto sui tuoi server di produzione. Codeship consente di definire pipeline sofisticate per test e implementazione.
A proposito, Codeship offre anche questo eBook gratuito e molto informativo: Efficienza nei flussi di lavoro di sviluppo. Potresti voler controllare insieme al Blog di Codeship, che ti tiene aggiornato con i nuovi sviluppi e le migliori pratiche.
Presumo che tu abbia seguito il nostro primo tutorial e ti sei iscritto e iniziato a usare Codeship.
Se visiti il log di costruzione del tuo progetto, vedrai un elenco di risultati recenti. Clicca sul verde Successo pulsante.
Questo mostrerà i dettagli del risultato di costruzione e il Costruire opzioni menu della barra laterale.
Ecco il menu delle opzioni di Build. Clicca su Rivedi le impostazioni del test:
Ecco che vedrai il Impostazioni del progetto menu della barra laterale sulla sinistra, che è dove troveremo le opzioni di distribuzione di cui abbiamo bisogno.
Ecco una vista dettagliata del menu Impostazioni progetto. Clicca su Distribuzione:
Codeship offre un'integrazione della distribuzione pronta all'uso con molte soluzioni di hosting popolari tra cui Google AppEngine, Amazon Web Services CodeDeploy, Heroku, Engine Yard, Nodejitsu e altro. Codeship è un partner ufficiale di AWS e CodeDeploy.
Codeship offre una manciata di tutorial per varie piattaforme e una vasta gamma di documentazione per le opzioni di distribuzione continua.
Ti illustrerò due esempi. Innanzitutto, distribuirò il mio precedente build Yii2 Framework basato su PHP a AWS con CodeDeploy. Quindi, costruirò il Ruby Discourse Project usando ParallelCI per velocizzare i tempi di costruzione.
Nella prima parte, ho usato Codeship per eseguire test automatici su un fork del framework Yii2 basato su PHP. Ora, configuriamo Codeship per distribuire il mio progetto su un server AWS usando AWS CodeDeploy.
Per prima cosa, facciamo una passeggiata attraverso Amazon AWS CodeDeploy:
Fornirò una panoramica dettagliata di AWS CodeDeploy, ma il mio obiettivo non è descriverlo qui. Invece, il mio obiettivo è di aiutarti a configurare la connessione Codeship con AWS CodeDeploy.
Per prima cosa, visita il codice AWS CodeDeploy Iniziare pagina e scegli a Distribuzione personalizzata:
Poi, crea una nuova applicazione. Ho già creato un'istanza EC2 e l'ho taggato CodeDeployDemo.
Scegli un Configurazione della distribuzione. Ho già impostato un ruolo di servizio:
Ora che l'applicazione AWS CodeDeploy è stata configurata, è necessario configurare il gruppo di distribuzione per l'istanza.
Questo sarà diverso a seconda dell'applicazione e della posizione del bucket S3:
Quindi, torniamo a Codeship. Inserisci il tuo progetto e fai clic Impostazioni del progetto in alto a destra. Quindi fare clic Distribuzione:
Quindi, fare clic su CodeDeploy pulsante:
Completa le impostazioni delle proprietà di distribuzione del codice AWS con le chiavi di accesso Amazon, la chiave segreta e il nome dell'app e il gruppo di distribuzione CodeDeploy. Specifica anche il tuo bucket S3:
Ora, si consiglia di rivedere la documentazione di Codeship per l'utilizzo di AWS CodeDeploy e del relativo post sul blog.
La prossima volta che esegui il commit di un commit, Codeship costruirà la tua app, la testerà e avvierà un'operazione di CodeDeploy AWS.
Codeship offre anche una serie di guide video sul proprio canale Vimeo che potrebbero interessarti. Per esempio:
Eccoli in ordine. Quindi ci immergeremo nell'uso di ParallelCI per velocizzare i nostri test.
Ecco una breve guida per distribuire l'app Ruby on Rails da GitHub a Heroku, e il video è qui sotto:
Ecco una breve guida su come distribuire un'app Node.js da GitHub a Nodejitsu, e il video è qui sotto:
Ecco una breve guida su Come impostare l'integrazione continua e la distribuzione continua per un'applicazione Django da GitHub a App Engine, e il video è qui sotto:
Creerò un fork della popolare piattaforma di discussione Discourse for Ruby on Rails. Poi, aggiungerò un progetto a Codeship per la mia copia biforcuta di Discourse.
Clicca su Ambiente e configurare le variabili di ambiente per il nostro progetto Rails:
Quindi utilizzeremo i seguenti comandi di installazione per configurare le istruzioni di compilazione:
bundle install --without development --deployment --retry = 3 --jobs = 3 bundle exec rake db: migrate
Quindi spingo un esempio di modifica al file Leggimi per avviare una build Codeship.
Ecco i risultati di una build di successo:
Ora aggiungiamo i seguenti test a una singola pipeline.
bundle exec rake qunit: test bundle exec rake plugin: spec bundle exec rspec --profile
La prossima volta che eseguiamo il commit, Codeship crea il codice ed esegue il test. Con una pipeline, ci vogliono quasi dieci minuti.
Ora passiamo a ParallelCI.
Con ParallelCI, ogni progetto ha più pipeline di test che vengono eseguite in parallelo. Ciascuna di queste pipeline viene eseguita in una macchina virtuale indipendentemente dall'altra. Codeship eseguirà prima i comandi di configurazione e quindi qualsiasi arbitrario comandi di prova hai definito per questa pipeline specifica tramite l'interfaccia. Per facilitare la distinzione delle diverse pipeline, è possibile fornire un nome descrittivo per ciascuna di esse.
Ecco una panoramica del video con una base di codice diversa su come configureremo ParallelCI per velocizzare questi test:
Per la mia prima pipeline di test, eseguirò i seguenti test:
bundle exec rake qunit: bundle di prova plug-in exec rake: spec bundle exec rspec spec / controller spec / models --profile
Per la mia seconda pipeline di test, eseguirò quanto segue:
rm -fr spec / controller spec / models pacchetto exec rspec --profile
Quindi spingo un nuovo commit e tu puoi vedere ParallelCI in esecuzione di seguito con il registro di stato individuale di ogni pipeline:
Dopo soli 7 minuti e 26 secondi, la compilazione di due pipeline termina:
È un risparmio di tempo del campione di quasi il 30%. È un buon esempio di come ParallelCI di Codeship può far risparmiare tempo al tuo team quando esegui sequenze di build e test più sofisticate. Inoltre, ricorda che Codeship consente fino a 20 pipeline di test parallele - il guadagno di velocità qui può essere esponenziale.
Tenere presente che se si dispone di una distribuzione configurata per un ramo specifico e ogni pipeline di test segnala un'esecuzione corretta, verrà eseguita la pipeline di distribuzione. Non è necessario modificare nulla se si utilizza una delle distribuzioni integrate di Codeship, ad es. Heroku, AWS CodeDeploy, Google App Engine, ecc.
Inoltre, poiché i comandi di generazione e distribuzione vengono eseguiti su più macchine virtuali, le risorse create durante le fasi di test non saranno disponibili durante la distribuzione. Se hai bisogno di artefatti dai passaggi precedenti, assicurati di rigenerarli durante la distribuzione utilizzando una distribuzione di script aggiunta prima della distribuzione effettiva.
C'è ancora una cosa da ricordare, l'API Codeship.
Se desideri un controllo ancora maggiore su Codeship per creare e automatizzare completamente i tuoi servizi di consegna continua, Codeship offre un'API:
È possibile configurare i build sul progetto e riavviarli secondo necessità.
Vorrei riassumere ciò che abbiamo imparato su Codeship:
Codeship è in grado di fornire valore ai piccoli team con il loro piano gratuito o di base, così come con aziende molto grandi, che hanno bisogno di un massimo di 20 pipeline di test parallele, con il loro piano Enterprise. Vedi la pagina dei prezzi di Codeship per maggiori informazioni. C'è anche una prova gratuita di 14 giorni per chiunque di provare la loro 20 configurazione parallela di test della pipeline.
Spero che provi Codeship. Condividi la tua esperienza nei commenti. Come sempre, non esitate a postare anche le vostre domande. Puoi anche raggiungermi su Twitter @reifman o mandarmi un'email direttamente. Visita la mia pagina di istruttori + tutor per vedere altri tutorial che ho scritto.