En aquest tema, aprendrem sobre la integració i desplegament continu (CI/CD), una pràctica essencial en el desenvolupament de programari modern que permet automatitzar el procés de construcció, prova i desplegament de les aplicacions. Això ajuda a garantir que el codi es mantingui en un estat desplegable en tot moment i que els canvis es puguin integrar i desplegar de manera ràpida i segura.
Què és CI/CD?
Integració Contínua (CI)
La integració contínua és una pràctica de desenvolupament de programari on els desenvolupadors integren el seu codi en un repositori compartit diverses vegades al dia. Cada integració es verifica mitjançant la construcció automàtica i l'execució de proves per detectar errors tan aviat com sigui possible.
Desplegament Continu (CD)
El desplegament continu és una extensió de la integració contínua que permet desplegar automàticament cada canvi que passa les proves en un entorn de producció. Això assegura que el programari estigui sempre en un estat desplegable i que els canvis es puguin lliurar als usuaris de manera ràpida i segura.
Beneficis de CI/CD
- Detecció primerenca d'errors: Les proves automàtiques ajuden a detectar errors tan aviat com es produeixen.
- Desplegament ràpid i segur: Els canvis es poden desplegar de manera ràpida i segura gràcies a la automatització.
- Millora de la col·laboració: Els desenvolupadors poden integrar el seu codi de manera freqüent, millorant la col·laboració i reduint els conflictes de codi.
- Feedback ràpid: Els desenvolupadors reben feedback ràpid sobre l'estat del seu codi, permetent una resolució més ràpida dels problemes.
Configuració de CI/CD amb GitHub Actions
GitHub Actions és una plataforma d'automatització que permet crear fluxos de treball personalitzats per construir, provar i desplegar el codi directament des de GitHub. A continuació, veurem com configurar un flux de treball bàsic de CI/CD per a una aplicació Node.js.
Pas 1: Crear un Repositori de GitHub
- Crea un nou repositori a GitHub.
- Clona el repositori al teu ordinador local.
Pas 2: Configurar el Projecte Node.js
-
Inicialitza un nou projecte Node.js:
npm init -y
-
Afegeix un fitxer
index.js
amb el següent contingut:const http = require('http'); const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello, World!\n'); }); const PORT = process.env.PORT || 3000; server.listen(PORT, () => { console.log(`Server running at http://localhost:${PORT}/`); });
-
Afegeix un fitxer
test.js
per a les proves:const assert = require('assert'); describe('Sample Test', () => { it('should return true', () => { assert.strictEqual(true, true); }); });
-
Afegeix les dependències de prova:
npm install --save-dev mocha
-
Actualitza el
package.json
per incloure un script de prova:"scripts": { "test": "mocha" }
Pas 3: Configurar GitHub Actions
- Crea una carpeta
.github/workflows
al directori arrel del teu projecte. - Afegeix un fitxer
ci.yml
amb el següent contingut:name: Node.js CI on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: ubuntu-latest strategy: matrix: node-version: [12.x, 14.x, 16.x] steps: - name: Checkout repository uses: actions/checkout@v2 - name: Setup Node.js uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} - name: Install dependencies run: npm install - name: Run tests run: npm test
Pas 4: Provar la Configuració
-
Fes un commit i puja els canvis al repositori de GitHub:
git add . git commit -m "Setup CI with GitHub Actions" git push origin main
-
Ves al teu repositori a GitHub i comprova la pestanya "Actions" per veure el flux de treball en execució.
Desplegament Automàtic amb Heroku
Heroku és una plataforma de desplegament que permet desplegar aplicacions de manera fàcil i ràpida. A continuació, veurem com configurar el desplegament automàtic amb Heroku.
Pas 1: Crear una Aplicació a Heroku
- Crea un compte a Heroku.
- Crea una nova aplicació des del tauler de control de Heroku.
Pas 2: Configurar el Desplegament Automàtic
- Afegeix el repositori de GitHub a la teva aplicació de Heroku.
- Configura el desplegament automàtic des de la pestanya "Deploy" de la teva aplicació de Heroku.
Pas 3: Provar el Desplegament
-
Fes un commit i puja els canvis al repositori de GitHub:
git add . git commit -m "Setup automatic deployment with Heroku" git push origin main
-
Ves al tauler de control de Heroku i comprova que la teva aplicació s'ha desplegat correctament.
Exercici Pràctic
Objectiu
Configurar un flux de treball de CI/CD per a una aplicació Node.js que inclogui proves automàtiques i desplegament automàtic a Heroku.
Passos
- Crea un nou repositori de GitHub i inicialitza un projecte Node.js.
- Configura GitHub Actions per executar les proves automàtiques.
- Configura el desplegament automàtic a Heroku.
Solució
Segueix els passos detallats en aquesta secció per configurar el flux de treball de CI/CD.
Resum
En aquesta secció, hem après sobre la integració i desplegament continu (CI/CD) i els seus beneficis. Hem configurat un flux de treball de CI/CD bàsic utilitzant GitHub Actions per a una aplicació Node.js i hem configurat el desplegament automàtic a Heroku. Aquestes pràctiques ajuden a garantir que el codi es mantingui en un estat desplegable en tot moment i que els canvis es puguin integrar i desplegar de manera ràpida i segura.
Curs de Node.js
Mòdul 1: Introducció a Node.js
Mòdul 2: Conceptes Bàsics
Mòdul 3: Sistema de Fitxers i I/O
Mòdul 4: HTTP i Servidors Web
Mòdul 5: NPM i Gestió de Paquets
Mòdul 6: Framework Express.js
- Introducció a Express.js
- Configuració d'una Aplicació Express
- Middleware
- Routing en Express
- Gestió d'Errors
Mòdul 7: Bases de Dades i ORMs
- Introducció a les Bases de Dades
- Utilitzar MongoDB amb Mongoose
- Utilitzar Bases de Dades SQL amb Sequelize
- Operacions CRUD
Mòdul 8: Autenticació i Autorització
Mòdul 9: Proves i Depuració
- Introducció a les Proves
- Proves Unitàries amb Mocha i Chai
- Proves d'Integració
- Depuració d'Aplicacions Node.js
Mòdul 10: Temes Avançats
Mòdul 11: Desplegament i DevOps
- Variables d'Entorn
- Utilitzar PM2 per a la Gestió de Processos
- Desplegar a Heroku
- Integració i Desplegament Continu