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

  1. Crea un nou repositori a GitHub.
  2. Clona el repositori al teu ordinador local.

Pas 2: Configurar el Projecte Node.js

  1. Inicialitza un nou projecte Node.js:

    npm init -y
    
  2. 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}/`);
    });
    
  3. Afegeix un fitxer test.js per a les proves:

    const assert = require('assert');
    
    describe('Sample Test', () => {
        it('should return true', () => {
            assert.strictEqual(true, true);
        });
    });
    
  4. Afegeix les dependències de prova:

    npm install --save-dev mocha
    
  5. Actualitza el package.json per incloure un script de prova:

    "scripts": {
        "test": "mocha"
    }
    

Pas 3: Configurar GitHub Actions

  1. Crea una carpeta .github/workflows al directori arrel del teu projecte.
  2. 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ó

  1. 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
    
  2. 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

  1. Crea un compte a Heroku.
  2. Crea una nova aplicació des del tauler de control de Heroku.

Pas 2: Configurar el Desplegament Automàtic

  1. Afegeix el repositori de GitHub a la teva aplicació de Heroku.
  2. Configura el desplegament automàtic des de la pestanya "Deploy" de la teva aplicació de Heroku.

Pas 3: Provar el Desplegament

  1. 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
    
  2. 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

  1. Crea un nou repositori de GitHub i inicialitza un projecte Node.js.
  2. Configura GitHub Actions per executar les proves automàtiques.
  3. 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

Mòdul 7: Bases de Dades i ORMs

Mòdul 8: Autenticació i Autorització

Mòdul 9: Proves i Depuració

Mòdul 10: Temes Avançats

Mòdul 11: Desplegament i DevOps

Mòdul 12: Projectes del Món Real

© Copyright 2024. Tots els drets reservats