En aquest exercici, aprendrem a configurar i executar un pipeline de CI/CD per desplegar una aplicació en un entorn de producció. Utilitzarem Jenkins com a eina principal per a la configuració del pipeline.
Objectius de l'Exercici
- Configurar un pipeline de CI/CD en Jenkins.
- Automatitzar el desplegament d'una aplicació en un entorn de producció.
- Integrar proves de desplegament per assegurar la qualitat del codi.
- Implementar estratègies de desplegament segures i eficients.
Requisits Previs
- Coneixements bàsics de Jenkins.
- Coneixements bàsics de Docker i Kubernetes.
- Accés a un entorn de producció (pot ser un servidor virtual o un clúster de Kubernetes).
- Coneixements bàsics de Git.
Passos de l'Exercici
- Configuració del Pipeline en Jenkins
1.1 Crear un Nou Job en Jenkins
- Inicia sessió a la teva instància de Jenkins.
- Crea un nou job seleccionant "Pipeline" com a tipus de projecte.
- Dona-li un nom al job, per exemple,
deploy-to-production.
1.2 Definir el Pipeline
A la secció de configuració del job, defineix el pipeline utilitzant el següent script:
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git 'https://github.com/usuari/repo.git'
}
}
stage('Build') {
steps {
sh 'docker build -t usuari/app:latest .'
}
}
stage('Test') {
steps {
sh 'docker run usuari/app:latest ./run-tests.sh'
}
}
stage('Deploy') {
steps {
script {
def server = 'produccio.server.com'
def user = 'deploy_user'
def app = 'usuari/app:latest'
sh "ssh ${user}@${server} 'docker pull ${app} && docker stop app || true && docker rm app || true && docker run -d --name app ${app}'"
}
}
}
}
}
- Automatització del Desplegament
2.1 Construcció de la Imatge Docker
En l'etapa de Build, construïm la imatge Docker de l'aplicació. Assegura't que el Dockerfile estigui a l'arrel del repositori.
2.2 Proves Automatitzades
Executem les proves automatitzades dins d'un contenidor Docker per assegurar-nos que la imatge és funcional.
2.3 Desplegament a Producció
Utilitzem SSH per connectar-nos al servidor de producció i desplegar la nova imatge Docker.
ssh ${user}@${server} 'docker pull ${app} && docker stop app || true && docker rm app || true && docker run -d --name app ${app}'
- Estratègies de Desplegament
3.1 Desplegament Blue-Green
Una estratègia de desplegament blue-green implica tenir dos entorns d'aplicació (blue i green). Només un d'ells està actiu en producció en qualsevol moment. Quan es fa un desplegament, es desplega la nova versió en l'entorn inactiu i després es canvia el trànsit a aquest entorn.
3.2 Desplegament Canari
El desplegament canari implica desplegar la nova versió a un subconjunt de servidors o usuaris per monitoritzar el seu rendiment abans de desplegar-la completament.
- Monitoratge i Retroalimentació
4.1 Configuració del Monitoratge
Configura eines de monitoratge com Prometheus i Grafana per monitoritzar el rendiment de l'aplicació després del desplegament.
4.2 Retroalimentació
Implementa alertes i notificacions per rebre retroalimentació immediata en cas de problemes després del desplegament.
Exercici Pràctic
Tasca 1: Configura el Pipeline
Configura el pipeline en Jenkins seguint els passos descrits anteriorment.
Tasca 2: Executa el Pipeline
Executa el pipeline i assegura't que totes les etapes es completen correctament.
Tasca 3: Implementa una Estratègia de Desplegament
Implementa una estratègia de desplegament blue-green o canari en el teu pipeline.
Tasca 4: Configura el Monitoratge
Configura eines de monitoratge per la teva aplicació desplegada.
Solucions
Solució a la Tasca 1
pipeline {
agent any
stages {
stage('Checkout') {
steps {
git 'https://github.com/usuari/repo.git'
}
}
stage('Build') {
steps {
sh 'docker build -t usuari/app:latest .'
}
}
stage('Test') {
steps {
sh 'docker run usuari/app:latest ./run-tests.sh'
}
}
stage('Deploy') {
steps {
script {
def server = 'produccio.server.com'
def user = 'deploy_user'
def app = 'usuari/app:latest'
sh "ssh ${user}@${server} 'docker pull ${app} && docker stop app || true && docker rm app || true && docker run -d --name app ${app}'"
}
}
}
}
}Solució a la Tasca 3
Implementació d'una estratègia de desplegament blue-green:
stage('Deploy') {
steps {
script {
def server = 'produccio.server.com'
def user = 'deploy_user'
def app = 'usuari/app:latest'
def blue = 'app-blue'
def green = 'app-green'
sh "ssh ${user}@${server} 'docker pull ${app} && docker stop ${green} || true && docker rm ${green} || true && docker run -d --name ${green} ${app}'"
sh "ssh ${user}@${server} 'docker stop ${blue} || true && docker rm ${blue} || true && docker rename ${green} ${blue}'"
}
}
}Conclusió
En aquest exercici, hem après a configurar un pipeline de CI/CD en Jenkins per desplegar una aplicació en un entorn de producció. Hem automatitzat la construcció, les proves i el desplegament de l'aplicació, i hem implementat estratègies de desplegament segures. A més, hem configurat eines de monitoratge per assegurar-nos que l'aplicació funciona correctament després del desplegament.
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ó
