En este tema, aprenderás cómo configurar un entorno de Integración Continua (CI) y Entrega Continua (CD) desde cero. Este proceso es fundamental para automatizar la construcción, prueba y despliegue de aplicaciones, mejorando la eficiencia y la calidad del software.
Objetivos de Aprendizaje
Al finalizar este tema, deberías ser capaz de:
- Comprender los componentes clave de un entorno de CI/CD.
- Configurar un servidor de CI/CD.
- Crear y configurar un pipeline básico de CI/CD.
- Integrar herramientas de control de versiones y pruebas automatizadas.
Componentes Clave de un Entorno de CI/CD
Un entorno de CI/CD generalmente incluye los siguientes componentes:
- Control de versiones: Herramientas como Git para gestionar el código fuente.
- Servidor de CI/CD: Herramientas como Jenkins, GitLab CI, CircleCI, Travis CI.
- Pipeline de CI/CD: Secuencia de pasos automatizados para construir, probar y desplegar el código.
- Herramientas de prueba: JUnit, Selenium, etc., para pruebas automatizadas.
- Entorno de despliegue: Servidores o servicios en la nube donde se despliega la aplicación.
Paso 1: Configuración del Control de Versiones
1.1. Instalación de Git
Para instalar Git, sigue estos pasos:
En Windows:
- Descarga Git desde git-scm.com.
- Ejecuta el instalador y sigue las instrucciones.
En macOS:
En Linux:
1.2. Configuración Básica de Git
Configura tu nombre de usuario y correo electrónico:
git config --global user.name "Tu Nombre" git config --global user.email "[email protected]"
Paso 2: Configuración del Servidor de CI/CD
2.1. Instalación de Jenkins
Jenkins es una de las herramientas de CI/CD más populares. A continuación, se muestra cómo instalar Jenkins en una máquina con Ubuntu.
En Ubuntu:
sudo apt update sudo apt install openjdk-11-jdk wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add - sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list' sudo apt update sudo apt install jenkins sudo systemctl start jenkins sudo systemctl enable jenkins
2.2. Acceso a Jenkins
- Abre un navegador web y navega a
http://localhost:8080
. - Sigue las instrucciones en pantalla para desbloquear Jenkins usando la contraseña inicial ubicada en
/var/lib/jenkins/secrets/initialAdminPassword
.
Paso 3: Creación y Configuración de un Pipeline de CI/CD
3.1. Creación de un Pipeline en Jenkins
- En el panel de Jenkins, selecciona "Nuevo Item".
- Introduce un nombre para el proyecto y selecciona "Pipeline".
- Configura el repositorio de Git en la sección "Pipeline":
pipeline { agent any stages { stage('Build') { steps { git 'https://github.com/tu-repositorio.git' sh 'echo "Construyendo..."' } } stage('Test') { steps { sh 'echo "Ejecutando pruebas..."' } } stage('Deploy') { steps { sh 'echo "Desplegando..."' } } } }
3.2. Ejecución del Pipeline
- Guarda y ejecuta el pipeline.
- Observa las etapas de construcción, prueba y despliegue en la consola de Jenkins.
Paso 4: Integración de Herramientas de Pruebas Automatizadas
4.1. Configuración de JUnit
- Añade dependencias de JUnit en tu archivo
pom.xml
(para proyectos Maven):<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency>
4.2. Ejecución de Pruebas en el Pipeline
Modifica el pipeline para incluir la ejecución de pruebas:
pipeline { agent any stages { stage('Build') { steps { git 'https://github.com/tu-repositorio.git' sh 'mvn clean install' } } stage('Test') { steps { sh 'mvn test' } } stage('Deploy') { steps { sh 'echo "Desplegando..."' } } } }
Ejercicio Práctico
Ejercicio 1: Configuración de un Pipeline Básico
- Configura un repositorio de Git con un proyecto simple.
- Instala Jenkins en tu máquina local.
- Crea un pipeline en Jenkins que:
- Clone el repositorio.
- Ejecute un script de construcción.
- Ejecute pruebas automatizadas.
- Despliegue la aplicación.
Solución del Ejercicio
-
Repositorio de Git:
git init mi-proyecto cd mi-proyecto echo "print('Hola, Mundo!')" > app.py git add . git commit -m "Primer commit" git remote add origin https://github.com/tu-usuario/mi-proyecto.git git push -u origin master
-
Pipeline en Jenkins:
pipeline { agent any stages { stage('Build') { steps { git 'https://github.com/tu-usuario/mi-proyecto.git' sh 'echo "Construyendo..."' } } stage('Test') { steps { sh 'echo "Ejecutando pruebas..."' } } stage('Deploy') { steps { sh 'echo "Desplegando..."' } } } }
Conclusión
En esta sección, has aprendido a configurar un entorno de CI/CD, incluyendo la instalación de herramientas esenciales como Git y Jenkins, y la creación de un pipeline básico. Estos conocimientos son fundamentales para cualquier profesional de DevOps, ya que permiten automatizar y optimizar el ciclo de vida del desarrollo de software. En el próximo tema, profundizaremos en la automatización de un pipeline de despliegue.
Curso de DevOps Básico
Módulo 1: Introducción a DevOps
- ¿Qué es DevOps?
- Historia y evolución de DevOps
- Principios y beneficios de DevOps
- Cultura y mentalidad DevOps
Módulo 2: Fundamentos de Integración Continua (CI)
- Conceptos básicos de CI
- Herramientas populares de CI
- Configuración de un pipeline de CI
- Pruebas automatizadas en CI
Módulo 3: Fundamentos de Entrega Continua (CD)
- Conceptos básicos de CD
- Diferencias entre CI y CD
- Herramientas populares de CD
- Configuración de un pipeline de CD
Módulo 4: Automatización de Despliegues
- Introducción a la automatización de despliegues
- Herramientas de automatización de despliegues
- Despliegue continuo (CD) vs. Entrega continua (CD)
- Prácticas recomendadas para la automatización de despliegues
Módulo 5: Colaboración entre Desarrollo y Operaciones
- Comunicación y colaboración en equipos DevOps
- Herramientas de colaboración y gestión de proyectos
- Integración de feedback continuo
- Casos de estudio y ejemplos de éxito
Módulo 6: Ejercicios Prácticos y Proyectos
- Configuración de un entorno de CI/CD
- Automatización de un pipeline de despliegue
- Implementación de pruebas automatizadas
- Proyecto final: Implementación completa de CI/CD