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
 
