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

  1. 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.
  2. Repositorio: Almacenamiento centralizado donde se guarda el código fuente y su historial de cambios.
  3. Branching: Creación de ramas para desarrollar nuevas características, corregir errores o experimentar sin afectar la rama principal.
  4. Merging: Proceso de combinar cambios de diferentes ramas en una sola.
  5. Commit: Acción de guardar cambios en el repositorio con un mensaje descriptivo.
  6. 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

  1. 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
      
  2. Configuración Inicial de Git:

    git config --global user.name "Tu Nombre"
    git config --global user.email "[email protected]"
    
  3. Creación de un Repositorio:

    mkdir mi_proyecto
    cd mi_proyecto
    git init
    
  4. Añadir y Confirmar Cambios:

    git add .
    git commit -m "Mensaje de commit inicial"
    

Integración con un Servidor CI

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

  1. 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.
  2. 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.
  3. 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.
  4. 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).

© Copyright 2024. Todos los derechos reservados