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

  1. Configurar un entorno de CI/CD: Crear un entorno que soporte la integración y entrega continua.
  2. Automatizar un pipeline de despliegue: Implementar un pipeline que automatice el proceso de despliegue.
  3. Implementar pruebas automatizadas: Integrar pruebas automatizadas en el pipeline para asegurar la calidad del código.
  4. 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

  1. 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.
  2. 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
      

Paso 2: Configuración del Pipeline de CI

  1. Elegir una herramienta de CI:

    • Selecciona una herramienta de CI que se integre bien con tu repositorio de código.
  2. 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
      

Paso 3: Implementación de Pruebas Automatizadas

  1. 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);
          }
      }
      
  2. 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

  1. Configurar un entorno de despliegue:

    • Configura un servidor o utiliza un servicio en la nube para el despliegue.
  2. 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"]
      
  3. 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'
                  }
              }
          }
      }
      

Paso 5: Despliegue Final y Verificación

  1. Desplegar la aplicación:

    • Ejecuta el pipeline completo y verifica que la aplicación se despliegue correctamente en el entorno de producción.
  2. 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

  1. README.md:

    • Incluye una descripción del proyecto, instrucciones para configurar el entorno, ejecutar el pipeline y desplegar la aplicación.
  2. 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.

© Copyright 2024. Todos los derechos reservados