La integración con sistemas de control de versiones es un componente esencial de la Integración Continua (CI). Permite a los equipos de desarrollo gestionar y rastrear cambios en el código fuente de manera eficiente, facilitando la colaboración y la automatización de procesos.
Conceptos Clave
- Control de Versiones: Sistema que registra los cambios en un archivo o conjunto de archivos a lo largo del tiempo, permitiendo recuperar versiones específicas más adelante.
- Repositorio: Almacenamiento centralizado donde se guarda el código fuente y su historial de cambios.
- Branching: Creación de ramas para desarrollar nuevas características, corregir errores o experimentar sin afectar la rama principal.
- Merging: Proceso de combinar cambios de diferentes ramas en una sola.
- Commit: Acción de guardar cambios en el repositorio con un mensaje descriptivo.
- Pull Request (PR): Solicitud para revisar y fusionar cambios de una rama a otra.
Herramientas Populares de Control de Versiones
- Git: Sistema de control de versiones distribuido, ampliamente utilizado en la industria.
- Subversion (SVN): Sistema de control de versiones centralizado.
- Mercurial: Sistema de control de versiones distribuido similar a Git.
Integración de CI con Control de Versiones
Configuración Básica
-
Instalación de Git:
- En sistemas basados en Debian/Ubuntu:
sudo apt-get update sudo apt-get install git
- En sistemas basados en Red Hat/Fedora:
sudo yum install git
- En sistemas basados en Debian/Ubuntu:
-
Configuración Inicial de Git:
git config --global user.name "Tu Nombre" git config --global user.email "[email protected]"
-
Creación de un Repositorio:
mkdir mi_proyecto cd mi_proyecto git init
-
Añadir y Confirmar Cambios:
git add . git commit -m "Mensaje de commit inicial"
Integración con un Servidor CI
-
Configuración de Webhooks:
- Los webhooks permiten que el servidor CI reciba notificaciones automáticas de eventos en el repositorio, como commits o pull requests.
- Ejemplo en GitHub:
- Ve a la configuración del repositorio.
- Selecciona "Webhooks".
- Añade un nuevo webhook con la URL del servidor CI.
-
Configuración del Pipeline CI:
- Ejemplo usando Jenkins:
- Instala el plugin de Git en Jenkins.
- Crea un nuevo proyecto y selecciona "Git" como sistema de control de versiones.
- Proporciona la URL del repositorio y las credenciales necesarias.
- Configura los triggers para que el pipeline se ejecute en cada commit o pull request.
- Ejemplo usando Jenkins:
Ejemplo Práctico
Jenkinsfile para un Proyecto de Node.js
pipeline { agent any stages { stage('Checkout') { steps { git 'https://github.com/usuario/mi_proyecto.git' } } stage('Install Dependencies') { steps { sh 'npm install' } } stage('Run Tests') { steps { sh 'npm test' } } stage('Build') { steps { sh 'npm run build' } } } }
Ejercicio Práctico
Ejercicio: Configuración de un Pipeline CI con Git y Jenkins
Objetivo: Configurar un pipeline CI en Jenkins que se active con cada commit en un repositorio Git.
Pasos:
-
Instalar Jenkins y Git:
- Sigue las instrucciones de instalación de Jenkins para tu sistema operativo.
- Asegúrate de que Git esté instalado y configurado.
-
Crear un Repositorio en GitHub:
- Crea un nuevo repositorio en GitHub.
- Clona el repositorio en tu máquina local y añade un archivo
Jenkinsfile
con el contenido proporcionado anteriormente.
-
Configurar Jenkins:
- Accede a la interfaz de Jenkins.
- Instala el plugin de Git desde el gestor de plugins.
- Crea un nuevo proyecto de tipo "Pipeline".
- En la sección "Pipeline", selecciona "Pipeline script from SCM" y elige "Git".
- Proporciona la URL del repositorio y las credenciales necesarias.
- Guarda y ejecuta el pipeline.
-
Configurar Webhooks en GitHub:
- Ve a la configuración del repositorio en GitHub.
- Selecciona "Webhooks" y añade un nuevo webhook con la URL de Jenkins (
http://tu-servidor-jenkins/github-webhook/
).
Solución:
- Verifica que el pipeline se ejecute automáticamente con cada commit en el repositorio.
- Asegúrate de que todas las etapas del pipeline (checkout, instalación de dependencias, pruebas y construcción) se completen sin errores.
Conclusión
La integración con sistemas de control de versiones es fundamental para la implementación efectiva de CI. Permite la automatización de procesos, mejora la colaboración y asegura que el código se mantenga en un estado consistente y desplegable. En el siguiente módulo, exploraremos cómo llevar estos principios al despliegue continuo (CD).
Curso de CI/CD: Integración y Despliegue Continuo
Módulo 1: Introducción a CI/CD
Módulo 2: Integración Continua (CI)
- Introducción a la Integración Continua
- Configuración de un Entorno de CI
- Automatización de la Construcción
- Pruebas Automatizadas
- Integración con Control de Versiones
Módulo 3: Despliegue Continuo (CD)
- Introducción al Despliegue Continuo
- Automatización del Despliegue
- Estrategias de Despliegue
- Monitoreo y Retroalimentación
Módulo 4: Prácticas Avanzadas de CI/CD
Módulo 5: Implementación de CI/CD en Proyectos Reales
Módulo 6: Herramientas y Tecnologías
Módulo 7: Ejercicios Prácticos
- Ejercicio 1: Configuración de un Pipeline Básico
- Ejercicio 2: Integración de Pruebas Automatizadas
- Ejercicio 3: Despliegue en un Entorno de Producción
- Ejercicio 4: Monitoreo y Retroalimentación