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
omaster
). - Merging: Fusionar una branca integra els canvis d'una branca a una altra.
Integració amb CI
Configuració del Repositori
- Crear un Repositori: Si no tens un repositori, crea'n un en una plataforma com GitHub, GitLab o Bitbucket.
- Clonar el Repositori: Clona el repositori al teu entorn local.
git clone https://github.com/usuari/repo.git cd repo
Automatització amb CI
-
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
. -
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
-
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
- Commits Frequents i Petits: Realitza commits freqüents amb canvis petits per facilitar la integració i la resolució de conflictes.
- 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.
- 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
- Historial de Canvis: Pots veure qui va fer què i quan, i revertir canvis si cal.
- Col·laboració: Facilita el treball en equip, permetent que múltiples desenvolupadors treballin en diferents parts del projecte simultàniament.
- 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
-
Crear un Repositori: Crea un repositori nou a GitHub.
-
Clonar el Repositori: Clona el repositori al teu ordinador.
git clone https://github.com/usuari/ci-cd-exercici.git cd ci-cd-exercici
-
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..."
-
Commits i Push: Fes commit i push dels canvis.
git add .gitlab-ci.yml git commit -m "Add CI configuration" git push origin main
-
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.
Curs de CI/CD: Integració i Desplegament Continu
Mòdul 1: Introducció a CI/CD
Mòdul 2: Integració Contínua (CI)
- Introducció a la Integració Contínua
- Configuració d'un Entorn de CI
- Automatització de la Construcció
- Proves Automatitzades
- Integració amb Control de Versions
Mòdul 3: Desplegament Continu (CD)
- Introducció al Desplegament Continu
- Automatització del Desplegament
- Estratègies de Desplegament
- Monitoratge i Retroalimentació
Mòdul 4: Pràctiques Avançades de CI/CD
Mòdul 5: Implementació de CI/CD en Projectes Reals
Mòdul 6: Eines i Tecnologies
Mòdul 7: Exercicis Pràctics
- Exercici 1: Configuració d'un Pipeline Bàsic
- Exercici 2: Integració de Proves Automatitzades
- Exercici 3: Desplegament en un Entorn de Producció
- Exercici 4: Monitoratge i Retroalimentació