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:

  1. Comprender los componentes clave de un entorno de CI/CD.
  2. Configurar un servidor de CI/CD.
  3. Crear y configurar un pipeline básico de CI/CD.
  4. 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:

  1. Control de versiones: Herramientas como Git para gestionar el código fuente.
  2. Servidor de CI/CD: Herramientas como Jenkins, GitLab CI, CircleCI, Travis CI.
  3. Pipeline de CI/CD: Secuencia de pasos automatizados para construir, probar y desplegar el código.
  4. Herramientas de prueba: JUnit, Selenium, etc., para pruebas automatizadas.
  5. 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:

  1. Descarga Git desde git-scm.com.
  2. Ejecuta el instalador y sigue las instrucciones.

En macOS:

brew install git

En Linux:

sudo apt-get update
sudo apt-get install git

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

  1. Abre un navegador web y navega a http://localhost:8080.
  2. 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

  1. En el panel de Jenkins, selecciona "Nuevo Item".
  2. Introduce un nombre para el proyecto y selecciona "Pipeline".
  3. 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

  1. Guarda y ejecuta el pipeline.
  2. 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

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

  1. Configura un repositorio de Git con un proyecto simple.
  2. Instala Jenkins en tu máquina local.
  3. 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

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

© Copyright 2024. Todos los derechos reservados