Introducció

La integració amb el control de versions és un component fonamental de la Integració Contínua (CI). Permet gestionar els canvis en el codi font de manera eficient i col·laborativa. En aquest tema, explorarem com integrar el control de versions en un entorn de CI, les millors pràctiques i els beneficis que aporta.

Conceptes Clau

Control de Versions

El control de versions és un sistema que registra els canvis en un fitxer o conjunt de fitxers al llarg del temps, de manera que puguis recuperar versions específiques més endavant. Els sistemes de control de versions més populars inclouen Git, Subversion (SVN) i Mercurial.

Repositori

Un repositori és un lloc on es guarda el codi font i l'historial de versions. Pot ser local (en el teu ordinador) o remot (en un servidor).

Branching i Merging

  • Branching: Crear una branca permet treballar en una còpia del codi sense afectar la branca principal (normalment anomenada main o master).
  • Merging: Fusionar una branca integra els canvis d'una branca a una altra.

Integració amb CI

Configuració del Repositori

  1. Crear un Repositori: Si no tens un repositori, crea'n un en una plataforma com GitHub, GitLab o Bitbucket.
  2. Clonar el Repositori: Clona el repositori al teu entorn local.
    git clone https://github.com/usuari/repo.git
    cd repo
    

Automatització amb CI

  1. Configuració del Fitxer de CI: La majoria de les eines de CI requereixen un fitxer de configuració per definir el pipeline de CI. Per exemple, en GitLab CI, el fitxer és .gitlab-ci.yml.

  2. Definir les Etapes del Pipeline: Un pipeline típic inclou etapes com construcció, proves i desplegament. A continuació, es mostra un exemple de fitxer .gitlab-ci.yml:

    stages:
      - build
      - test
      - deploy
    
    build_job:
      stage: build
      script:
        - echo "Building the project..."
        - ./build_script.sh
    
    test_job:
      stage: test
      script:
        - echo "Running tests..."
        - ./test_script.sh
    
    deploy_job:
      stage: deploy
      script:
        - echo "Deploying the project..."
        - ./deploy_script.sh
    
  3. Integració amb el Repositori: Configura el servei de CI per connectar-se al teu repositori. Això sovint implica proporcionar permisos d'accés i configurar webhooks perquè els esdeveniments del repositori (com commits i merges) desencadenin el pipeline de CI.

Millors Pràctiques

  1. Commits Frequents i Petits: Realitza commits freqüents amb canvis petits per facilitar la integració i la resolució de conflictes.
  2. Revisió de Codi: Utilitza eines de revisió de codi per assegurar-te que els canvis són de qualitat abans de fusionar-los a la branca principal.
  3. Branques de Treball: Treballa en branques separades per a cada característica o correcció de bug i fusiona-les només quan estiguin llestes i provades.

Beneficis

  1. Historial de Canvis: Pots veure qui va fer què i quan, i revertir canvis si cal.
  2. Col·laboració: Facilita el treball en equip, permetent que múltiples desenvolupadors treballin en diferents parts del projecte simultàniament.
  3. Integració Automàtica: Els canvis es poden integrar automàticament, reduint el risc de conflictes i errors.

Exercici Pràctic

Objectiu

Configurar un pipeline de CI que es desencadeni automàticament en fer un commit al repositori.

Passos

  1. Crear un Repositori: Crea un repositori nou a GitHub.

  2. Clonar el Repositori: Clona el repositori al teu ordinador.

    git clone https://github.com/usuari/ci-cd-exercici.git
    cd ci-cd-exercici
    
  3. Afegir un Fitxer de CI: Crea un fitxer .gitlab-ci.yml amb el següent contingut:

    stages:
      - build
      - test
    
    build_job:
      stage: build
      script:
        - echo "Building the project..."
    
    test_job:
      stage: test
      script:
        - echo "Running tests..."
    
  4. Commits i Push: Fes commit i push dels canvis.

    git add .gitlab-ci.yml
    git commit -m "Add CI configuration"
    git push origin main
    
  5. Verificar el Pipeline: Accedeix a la plataforma de CI (GitLab, en aquest cas) i verifica que el pipeline s'ha executat correctament.

Solució

El pipeline hauria de mostrar dues etapes (build i test) que s'executen automàticament després de fer el push al repositori.

Conclusió

La integració amb el control de versions és essencial per a una implementació efectiva de CI. Permet gestionar els canvis de codi de manera eficient i col·laborativa, i automatitzar la construcció, les proves i el desplegament del programari. Amb les millors pràctiques i eines adequades, pots assegurar-te que el teu projecte es manté estable i de qualitat alta mentre evoluciona.

© Copyright 2024. Tots els drets reservats