Introducció a CI/CD i Conceptes Fonamentals
1. Introducció a CI/CD
Què és CI/CD?
CI/CD són les sigles de Continuous Integration (Integració Contínua) i Continuous Delivery/Deployment (Lliurament/Desplegament Continu). Es tracta d'un conjunt de pràctiques i metodologies que permeten als equips de desenvolupament lliurar canvis de codi de manera més freqüent i fiable.
Per què és important?
Abans de CI/CD, els desenvolupadors treballaven en les seves còpies locals durant dies o setmanes, i després intentaven integrar tot el codi alhora. Això provocava el que es coneixia com "integration hell" (infern d'integració), amb conflictes massius, errors difícils de depurar i desplegaments arriscats.
CI/CD resol aquests problemes mitjançant: - Detecció primerenca d'errors: Cada canvi es prova immediatament - Reducció de riscos: Desplegaments petits i freqüents són menys perillosos - Feedback ràpid: Els desenvolupadors saben immediatament si alguna cosa ha fallat - Automatització: Menys errors humans en proves i desplegaments - Millor qualitat del codi: Les proves automàtiques garanteixen estàndards
Diferències entre CI, CD (Delivery) i CD (Deployment)
Continuous Integration (CI): - Els desenvolupadors integren el codi al repositori principal diverses vegades al dia - Cada integració es verifica mitjançant builds automàtics i proves - Detecta problemes d'integració de manera primerenca
Continuous Delivery (CD): - El codi està sempre en un estat desplegable - Els desplegaments a producció requereixen aprovació manual - Tot el procés està automatitzat excepte el botó final de "desplegament"
Continuous Deployment (CD): - Cada canvi que passa les proves es desplega automàticament a producció - No hi ha intervenció manual - Màxim nivell d'automatització
2. Conceptes Fonamentals
Pipeline de CI/CD
Un pipeline és una seqüència automatitzada de passos que el codi segueix des de commit fins a producció. Els passos típics són:
- Source/Checkout: Obtenir el codi del repositori
- Build: Compilar el codi i generar artefactes
- Test: Executar proves automàtiques
- Analysis: Anàlisi estàtic de codi, cobertura, seguretat
- Package: Empaquetar l'aplicació (JAR, Docker image, etc.)
- Deploy to Staging: Desplegament a entorn de pre-producció
- Integration Tests: Proves en entorn similar a producció
- Deploy to Production: Desplegament a producció
Artefactes
Els artefactes són els resultats d'un build: executables, llibreries, imatges Docker, paquets NPM, etc. Es guarden en repositoris d'artefactes per poder-los reutilitzar i desplegar en diferents entorns.
Environments (Entorns)
Els entorns típics en un workflow de CI/CD són:
- Development: On treballen els desenvolupadors
- Testing/QA: Per proves funcionals i d'integració
- Staging/Pre-production: Rèplica de producció per validació final
- Production: L'entorn final accessible pels usuaris
Build Triggers
Els events que inicien un pipeline:
- Push/Commit: Cada vegada que es fa push al repositori
- Pull Request: Quan es crea o actualitza una PR
- Scheduled: Execucions programades (nightly builds)
- Manual: Iniciats manualment per un usuari
- Tag: Quan es crea una etiqueta (per exemple, una release)