En este proyecto final, aplicarás todos los conocimientos adquiridos a lo largo del curso para implementar un pipeline completo de CI/CD. Este ejercicio te permitirá consolidar tus habilidades y demostrar tu capacidad para gestionar un entorno DevOps de manera efectiva.
Objetivos del Proyecto
- Configurar un entorno de CI/CD: Crear un entorno que soporte la integración y entrega continua.
- Automatizar un pipeline de despliegue: Implementar un pipeline que automatice el proceso de despliegue.
- Implementar pruebas automatizadas: Integrar pruebas automatizadas en el pipeline para asegurar la calidad del código.
- Desplegar una aplicación en un entorno de producción: Realizar el despliegue final de una aplicación en un entorno de producción.
Requisitos del Proyecto
- Repositorio de código: Utilizar un sistema de control de versiones como Git.
- Herramientas de CI/CD: Elegir herramientas adecuadas para CI/CD, como Jenkins, GitLab CI, Travis CI, CircleCI, etc.
- Entorno de despliegue: Configurar un entorno de despliegue, como AWS, Azure, Google Cloud, o un servidor local.
- Pruebas automatizadas: Implementar pruebas unitarias y de integración.
- Documentación: Documentar cada paso del proceso y las decisiones tomadas.
Paso 1: Configuración del Repositorio de Código
-
Crear un repositorio en GitHub/GitLab/Bitbucket:
- Inicia sesión en tu plataforma de control de versiones preferida.
- Crea un nuevo repositorio y clona el repositorio en tu máquina local.
-
Estructura del proyecto:
- Organiza tu proyecto con una estructura clara. Por ejemplo:
my-app/ ├── src/ │ ├── main/ │ └── test/ ├── .gitignore ├── Jenkinsfile (o .gitlab-ci.yml, .travis.yml, etc.) ├── README.md └── Dockerfile
- Organiza tu proyecto con una estructura clara. Por ejemplo:
Paso 2: Configuración del Pipeline de CI
-
Elegir una herramienta de CI:
- Selecciona una herramienta de CI que se integre bien con tu repositorio de código.
-
Crear un archivo de configuración del pipeline:
- Jenkins:
pipeline { agent any stages { stage('Build') { steps { sh 'echo "Building..."' sh 'mvn clean package' } } stage('Test') { steps { sh 'echo "Testing..."' sh 'mvn test' } } stage('Deploy') { steps { sh 'echo "Deploying..."' sh 'scp target/my-app.jar user@server:/path/to/deploy' } } } }
- GitLab CI:
stages: - build - test - deploy build: stage: build script: - echo "Building..." - mvn clean package test: stage: test script: - echo "Testing..." - mvn test deploy: stage: deploy script: - echo "Deploying..." - scp target/my-app.jar user@server:/path/to/deploy
- Jenkins:
Paso 3: Implementación de Pruebas Automatizadas
-
Escribir pruebas unitarias:
- Utiliza un framework de pruebas como JUnit para escribir pruebas unitarias.
- Ejemplo de prueba unitaria en Java:
import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; public class MyAppTest { @Test public void testAddition() { assertEquals(2, 1 + 1); } }
-
Integrar pruebas en el pipeline:
- Asegúrate de que las pruebas se ejecuten en la etapa de prueba del pipeline.
Paso 4: Automatización del Despliegue
-
Configurar un entorno de despliegue:
- Configura un servidor o utiliza un servicio en la nube para el despliegue.
-
Crear un Dockerfile:
- Si estás utilizando contenedores, crea un Dockerfile para construir la imagen de la aplicación.
FROM openjdk:11 COPY target/my-app.jar my-app.jar ENTRYPOINT ["java", "-jar", "my-app.jar"]
- Si estás utilizando contenedores, crea un Dockerfile para construir la imagen de la aplicación.
-
Actualizar el pipeline para construir y desplegar la imagen Docker:
- Jenkins:
pipeline { agent any stages { stage('Build') { steps { sh 'echo "Building..."' sh 'mvn clean package' } } stage('Test') { steps { sh 'echo "Testing..."' sh 'mvn test' } } stage('Build Docker Image') { steps { sh 'docker build -t my-app .' } } stage('Deploy') { steps { sh 'docker run -d -p 8080:8080 my-app' } } } }
- Jenkins:
Paso 5: Despliegue Final y Verificación
-
Desplegar la aplicación:
- Ejecuta el pipeline completo y verifica que la aplicación se despliegue correctamente en el entorno de producción.
-
Verificación:
- Accede a la aplicación desplegada y verifica que todas las funcionalidades estén operativas.
- Revisa los logs y monitorea el rendimiento para asegurar que no haya problemas.
Documentación del Proyecto
-
README.md:
- Incluye una descripción del proyecto, instrucciones para configurar el entorno, ejecutar el pipeline y desplegar la aplicación.
-
Documentación del pipeline:
- Documenta cada etapa del pipeline, explicando su propósito y cómo se configura.
Conclusión
En este proyecto final, has implementado un pipeline completo de CI/CD, integrando pruebas automatizadas y desplegando una aplicación en un entorno de producción. Este ejercicio te ha permitido aplicar los conceptos y habilidades adquiridos a lo largo del curso, preparándote para enfrentar desafíos reales en un entorno DevOps.
¡Felicidades por completar el curso de DevOps Básico! Ahora estás listo para avanzar en tu carrera y enfrentar nuevos retos en el mundo de DevOps.
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