Tutorial sull'esecuzione di test di integrazione con Bitbucket Pipelines

Scopri come eseguire test di integrazione con Bitbucket Pipelines avendo più servizi in esecuzione in container Docker separati in una pipeline.
I test costituiscono una parte fondamentale della continuous integration e della continuous delivery. Inoltre, se pratichi la continuous deployment, saranno l'ultima linea di difesa contro i bug prima del rilascio delle modifiche ai tuoi clienti. I test unitari che convalidano singoli metodi e classi sono un ottimo punto di partenza per evitare problemi, ma dovrai eseguire anche test di integrazione che assicurino che i diversi moduli utilizzati dalla tua applicazione (server dell'applicazione, database, cache) interagiscano correttamente tra loro. In questo tutorial, scopriremo come eseguire test di integrazione con Bitbucket Pipelines avendo più servizi in esecuzione in container Docker separati in una pipeline.
Ora
30 minuti
Pubblico
Persone che non hanno familiarità con la continuous integration e/o Bitbucket Pipelines
PREREQUISITO
Node v4.6 o versioni successive per eseguire l'applicazione
Docker Community Edition v17.03 o versioni successive per eseguire MongoDB sul tuo computer locale
Un terminale per eseguire il comando bash
Git per gestire il repository ed eseguire il push a Bitbucket Cloud
Passaggio 1: eseguire l'applicazione di esempio localmente
Utilizzeremo un'applicazione Node.js di base che mostra un messaggio sulla home page e registra le visite in un database. Per concentrarti sulla configurazione di Bitbucket Pipelines, puoi semplicemente clonare l'applicazione dal tuo terminale.
git clone git@bitbucket.org:spittet/bitbucket-pipelines-services-tutorial.gitOra vai al tuo repository locale ed esegui npm install per installare le dipendenze richieste dall'applicazione.
cd bitbucket-pipelines-services-tutorial
npm installPrima di eseguire l'applicazione, avremo bisogno di avviare una nuova istanza di MongoDB. Grazie a Docker, puoi eseguire facilmente questa azione dal tuo terminale.
docker run --name mongodb -d -p 27017:27017 mongoAvvia poi la tua applicazione e vai su http://localhost:3000 per vederla in azione.
npm start
Puoi andare su http://localhost:3000/visits per assicurarti che le visite vengano registrate correttamente nel database.

Infine, verifichiamo il completamento dei test localmente tramite il comando npm test. Dovresti vedere due test completati dopo aver eseguito questo comando.
npm test
Questa applicazione di esempio sta eseguendo due test diversi:
Un test che verifica che l'applicazione mostri Hello World nella home page.
Un test che verifica che nel database venga registrata una nuova visita ogni volta che qualcuno accede alla home page.
Il primo test verrà superato anche se il database non è attivo, ma il secondo test è un test di integrazione che verifica che l'applicazione web interagisca correttamente con il server del database. Possiamo considerarlo anche un test funzionale perché verifica alcuni dei requisiti aziendali dell'applicazione. Scopri di più sui diversi tipi di test nella nostra guida.
Ora vedremo come utilizzare Bitbucket Pipelines per automatizzare i test della tua applicazione e configurarla in modo che funzioni con un database.
Passaggio 2: eseguire automaticamente dei test con Bitbucket Pipelines
Inizia creando un nuovo repository nel tuo account Bitbucket e aggiorna l'URL remoto in modo che l'origine punti al tuo repository Bitbucket.
git remote add bitbucket git@bitbucket.org:<account name>/<repository name>.git
git branch -m mainline
git push -u bitbucket mainlineVai alla sezione Pipelines del tuo repository per abilitare Bitbucket Pipelines.

Puoi utilizzare il modello JavaScript predefinito nella schermata successiva. Avrà già i comandi npm install e npm test necessari per installare le dipendenze ed eseguire la suite di test.

Il file bitbucket-pipelines.yml dovrebbe avere il seguente aspetto:
image: node:16
pipelines:
default:
- parallel:
- step:
name: Build and Test
caches:
- node
script:
- npm install
- npm testManca il servizio di database, ma lo aggiungeremo in un secondo momento.

Dopo aver eseguito il commit del file, verrai reindirizzato alla sezione Pipelines del tuo repository dove potrai vedere la tua prima pipeline in corso. La pipeline avrà esito negativo perché il secondo test non può essere eseguito correttamente senza una connessione al database. Se clicchi sulla tua pipeline, dovresti vedere una schermata simile a quella qui sotto che dice che 1 test è stato superato e 1 test non è stato superato.

Nella sezione successiva, risolveremo il problema aggiungendo una nuova definizione di servizio alla tua configurazione di Pipelines.
Passaggio 3: aggiungere una definizione di servizio per il database
Con Bitbucket Pipelines, puoi eseguire fino a 3 container Docker aggiuntivi oltre all'applicazione principale in esecuzione in una pipeline. Puoi utilizzare questi container per eseguire servizi come un archivio dati, uno strumento di analisi o qualsiasi servizio di terzi di cui la tua applicazione potrebbe aver bisogno per completare la pipeline. Nel nostro caso, utilizzeremo un container di servizi separato per eseguire MongoDB.
Vai alla sezione Source (Origine) del tuo repository per vedere la lista dei file.

Clicca sul file di configurazione bitbucket-pipelines.yml per accedervi. Troverai un pulsante di modifica nell'angolo in alto a destra che ti permetterà di modificare il file ed eseguire il commit direttamente dal tuo browser.
Dobbiamo aggiungere una definizione di servizio per il nostro database nella parte inferiore del file di configurazione.
bitbucket-pipelines.yml
image: node:16
pipelines:
default:
- step:
script:
- npm install
- npm test
definitions:
services:
database:
image: mongoNel caso di MongoDB, non abbiamo bisogno di impostazioni aggiuntive nella definizione dell'immagine, ma alcune immagini Docker per archivi di dati e servizi potrebbero richiedere di specificare alcune variabili di ambiente. Puoi trovare un elenco di esempi di database nella documentazione di Bitbucket Pipelines.
Prima di eseguire il commit del file, devi aggiungere il nuovo servizio al passaggio che sta eseguendo i test. La configurazione finale di Pipelines dovrebbe essere simile al codice riportato di seguito:
bitbucket-pipelines.yml
image: node:16
pipelines:
default:
- step:
script:
- npm install
- npm test
services:
- database
definitions:
services:
database:
image: mongoVai alla sezione Pipelines dopo aver eseguito il commit del file per vedere la pipeline in corso. Normalmente dovrebbe essere completato con successo.

Puoi cliccare sulla scheda del database nel pannello dei log per vedere i log del container MongoDB.

Mitico\! Ora sai come aggiungere servizi alla tua pipeline per eseguire test di integrazione. Non dimenticare di leggere la documentazione per saperne di più su come utilizzare questi servizi.