Objectiu de l'Exercici
En aquest exercici, aprendràs a integrar proves automatitzades en un pipeline de CI/CD. Això inclou la configuració de proves unitàries i d'integració, així com la seva execució automàtica en cada commit.
Passos a Seguir
- Configuració del Projecte
-
Clona el Repositori: Clona el repositori del projecte des del qual treballaràs.
git clone https://github.com/usuari/projecte.git cd projecte
-
Instal·la les Dependències: Assegura't que totes les dependències del projecte estiguin instal·lades.
npm install
- Escriure Proves Automatitzades
-
Crea un Directori de Proves: Si no existeix, crea un directori per a les proves.
mkdir tests
-
Escriu Proves Unitàries: Crea un fitxer de proves unitàries dins del directori
tests
. Per exemple,tests/unit.test.js
.const assert = require('assert'); const suma = require('../src/suma'); describe('Funció de Suma', function() { it('hauria de retornar 5 per a suma(2, 3)', function() { assert.strictEqual(suma(2, 3), 5); }); it('hauria de retornar -1 per a suma(-2, 1)', function() { assert.strictEqual(suma(-2, 1), -1); }); });
-
Escriu Proves d'Integració: Crea un fitxer de proves d'integració dins del directori
tests
. Per exemple,tests/integration.test.js
.const request = require('supertest'); const app = require('../src/app'); describe('API Endpoints', function() { it('hauria de retornar llista d'usuaris', function(done) { request(app) .get('/usuaris') .expect('Content-Type', /json/) .expect(200) .end(function(err, res) { if (err) return done(err); assert(Array.isArray(res.body)); done(); }); }); });
- Configuració del Pipeline de CI
-
Configura el Fitxer de Pipeline: Afegeix la configuració necessària per executar les proves en el fitxer de pipeline de CI. Per exemple, en un fitxer
.gitlab-ci.yml
:stages: - test test: stage: test image: node:14 script: - npm install - npm test only: - master
-
Configura el Fitxer de Proves: Assegura't que el fitxer
package.json
inclogui un script per executar les proves.{ "scripts": { "test": "mocha tests/*.test.js" } }
- Executar el Pipeline
-
Commit i Push: Fes commit i push dels canvis al repositori.
git add . git commit -m "Afegeix proves automatitzades" git push origin master
-
Verifica l'Execució del Pipeline: Accedeix a la plataforma de CI/CD (per exemple, GitLab) i verifica que el pipeline s'executi correctament i que les proves passin.
Solució
Fitxer tests/unit.test.js
const assert = require('assert'); const suma = require('../src/suma'); describe('Funció de Suma', function() { it('hauria de retornar 5 per a suma(2, 3)', function() { assert.strictEqual(suma(2, 3), 5); }); it('hauria de retornar -1 per a suma(-2, 1)', function() { assert.strictEqual(suma(-2, 1), -1); }); });
Fitxer tests/integration.test.js
const request = require('supertest'); const app = require('../src/app'); describe('API Endpoints', function() { it('hauria de retornar llista d'usuaris', function(done) { request(app) .get('/usuaris') .expect('Content-Type', /json/) .expect(200) .end(function(err, res) { if (err) return done(err); assert(Array.isArray(res.body)); done(); }); }); });
Fitxer .gitlab-ci.yml
Fitxer package.json
Errors Comuns i Consells
-
Error: No es troba el mòdul 'assert' o 'supertest':
- Solució: Assegura't d'instal·lar totes les dependències necessàries.
npm install mocha assert supertest --save-dev
-
Error: Les proves no es troben o no s'executen:
- Solució: Verifica que els camins dels fitxers de proves siguin correctes i que el script de proves en
package.json
estigui ben configurat.
- Solució: Verifica que els camins dels fitxers de proves siguin correctes i que el script de proves en
-
Error: El pipeline falla en la fase de test:
- Solució: Revisa els logs del pipeline per identificar l'error específic i corregeix-lo. Pot ser útil executar les proves localment abans de fer push.
Conclusió
En aquest exercici, has après a integrar proves automatitzades en un pipeline de CI/CD. Has configurat proves unitàries i d'integració, i has assegurat que s'executin automàticament en cada commit. Aquest procés és essencial per mantenir la qualitat del codi i detectar errors de manera primerenca.
Curs de CI/CD: Integració i Desplegament Continu
Mòdul 1: Introducció a CI/CD
Mòdul 2: Integració Contínua (CI)
- Introducció a la Integració Contínua
- Configuració d'un Entorn de CI
- Automatització de la Construcció
- Proves Automatitzades
- Integració amb Control de Versions
Mòdul 3: Desplegament Continu (CD)
- Introducció al Desplegament Continu
- Automatització del Desplegament
- Estratègies de Desplegament
- Monitoratge i Retroalimentació
Mòdul 4: Pràctiques Avançades de CI/CD
Mòdul 5: Implementació de CI/CD en Projectes Reals
Mòdul 6: Eines i Tecnologies
Mòdul 7: Exercicis Pràctics
- Exercici 1: Configuració d'un Pipeline Bàsic
- Exercici 2: Integració de Proves Automatitzades
- Exercici 3: Desplegament en un Entorn de Producció
- Exercici 4: Monitoratge i Retroalimentació