En aquest cas d'estudi, explorarem com implementar CI/CD en un projecte web. Aquest exemple pràctic il·lustrarà els passos necessaris per configurar un pipeline de CI/CD complet, des de la integració contínua fins al desplegament continu, utilitzant eines populars com Jenkins, Git, i Docker.
- Descripció del Projecte
1.1. Objectius del Projecte
- Desenvolupar una aplicació web amb una arquitectura de servidor-client.
- Automatitzar la construcció, proves i desplegament de l'aplicació.
- Assegurar la qualitat del codi mitjançant proves automatitzades.
- Desplegar l'aplicació en un entorn de producció de manera segura i eficient.
1.2. Tecnologies Utilitzades
- Frontend: React.js
- Backend: Node.js amb Express
- Base de Dades: MongoDB
- Control de Versions: Git
- CI/CD: Jenkins
- Contenidors: Docker
- Configuració del Repositori de Git
2.1. Estructura del Repositori
/projecte-web
/frontend
/src
/public
package.json
/backend
/src
package.json
Dockerfile
docker-compose.yml
Jenkinsfile
README.md2.2. Fitxer README.md
El fitxer README.md ha de contenir informació sobre el projecte, com ara les instruccions per a la instal·lació, l'ús i la contribució.
cd frontend npm install
cd backend npm install
docker-compose up
cd frontend npm test
cd backend npm test
- Configuració de Jenkins
3.1. Instal·lació de Jenkins
- Instal·la Jenkins en un servidor o utilitza Jenkins en un contenidor Docker.
- Instal·la els plugins necessaris: Git, Docker, Pipeline.
3.2. Creació del Pipeline
3.2.1. Fitxer Jenkinsfile
El fitxer Jenkinsfile defineix el pipeline de CI/CD.
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git 'https://github.com/usuari/projecte-web.git'
}
}
stage('Build Frontend') {
steps {
dir('frontend') {
sh 'npm install'
sh 'npm run build'
}
}
}
stage('Build Backend') {
steps {
dir('backend') {
sh 'npm install'
sh 'npm run build'
}
}
}
stage('Test Frontend') {
steps {
dir('frontend') {
sh 'npm test'
}
}
}
stage('Test Backend') {
steps {
dir('backend') {
sh 'npm test'
}
}
}
stage('Build Docker Image') {
steps {
sh 'docker build -t usuari/projecte-web .'
}
}
stage('Deploy') {
steps {
sh 'docker-compose up -d'
}
}
}
}3.3. Configuració del Job de Jenkins
- Crea un nou job de pipeline a Jenkins.
- Configura el job per utilitzar el fitxer
Jenkinsfiledel repositori.
- Automatització de la Construcció i Proves
4.1. Scripts de Construcció
- Frontend:
npm run build - Backend:
npm run build
4.2. Scripts de Proves
- Frontend:
npm test - Backend:
npm test
- Desplegament amb Docker
5.1. Fitxer Dockerfile
Defineix com construir la imatge Docker per al projecte.
# Backend FROM node:14 as backend WORKDIR /app COPY backend/package*.json ./ RUN npm install COPY backend/ . RUN npm run build # Frontend FROM node:14 as frontend WORKDIR /app COPY frontend/package*.json ./ RUN npm install COPY frontend/ . RUN npm run build # Final Image FROM node:14 WORKDIR /app COPY --from=backend /app /app/backend COPY --from=frontend /app /app/frontend CMD ["node", "backend/dist/index.js"]
5.2. Fitxer docker-compose.yml
Defineix els serveis necessaris per executar l'aplicació.
version: '3'
services:
web:
image: usuari/projecte-web
ports:
- "3000:3000"
environment:
- NODE_ENV=production
depends_on:
- mongo
mongo:
image: mongo
ports:
- "27017:27017"
- Monitoratge i Retroalimentació
6.1. Configuració del Monitoratge
- Utilitza eines com Prometheus i Grafana per monitoritzar l'aplicació.
- Configura alertes per a errors i rendiment.
6.2. Retroalimentació
- Configura notificacions a Jenkins per informar l'equip de desenvolupament sobre l'estat del pipeline.
- Utilitza eines com Slack o correu electrònic per a les notificacions.
- Resum
En aquest cas d'estudi, hem vist com implementar un pipeline de CI/CD per a un projecte web utilitzant Jenkins, Docker i altres eines. Hem cobert des de la configuració del repositori de Git fins al desplegament i monitoratge de l'aplicació. Aquest procés automatitzat ajuda a assegurar la qualitat del codi i a desplegar l'aplicació de manera eficient i segura.
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ó
