Manual de CI/CD per a projectes personals
Aquesta pàgina recull explicacions i apunts personals sobre la Integració Contínua (CI) i el Desplegament Continu (CD), amb exemples pràctics aplicats a projectes Laravel, PHP i altres entorns que faig servir habitualment.
Objectiu principal
La combinació de CI/CD té com a objectiu automatitzar i assegurar que:
- El codi funciona correctament cada vegada que fem canvis.
- Els canvis es despleguen a l’entorn de proves o producció de manera fiable.
Què és la Integració Contínua (CI)
La Integració Contínua (Continuous Integration) és una pràctica on el codi que desenvolupem s’integra regularment en un repositori compartit, sovint diverses vegades al dia. Cada vegada que es fa un “push” a Git, s’executen automàticament comprovacions, com:
- Proves unitàries o funcionals
- Validació que el codi compila o es construeix correctament
- Format i qualitat del codi amb eines com linters
El seu objectiu és detectar errors ràpidament i mantenir l’estabilitat del projecte.
Entrades relacionades amb CI:
- Exemple bàsic de CI amb GitHub Actions i Laravel
- Com protegir la branca principal amb GitHub i proves automatitzades
- Afegir secrets i variables d’entorn als workflows
- Usar secrets d’entorn de manera segura
Què és el Desplegament Continu (CD)
El Desplegament Continu (Continuous Delivery o Continuous Deployment) és el pas següent a la integració. Un cop validat que el codi funciona (amb CI), es prepara per ser desplegat automàticament.
- Continuous Delivery: el codi està llest per desplegar, però el pas final és manual.
- Continuous Deployment: el desplegament és automàtic un cop passen totes les proves.
Això permet fer arribar canvis a producció o entorns de staging ràpidament, sense haver de fer-ho a mà cada vegada.
Entrades relacionades amb CD:
- Desplegament automàtic amb GitHub Actions a un VPS
- Bones pràctiques amb secrets i tokens
- Desplegar només a staging, no a producció
- Desplegament amb Laravel Forge via webhook
Bones pràctiques de seguretat
- Usar secrets d’entorn de manera segura en GitHub Actions per a projectes Laravel
Eines que faig servir
- Git + GitHub
- GitHub Actions
- Laravel + PHPUnit
- Servidor VPS amb accés SSH
- Possibles integracions futures amb Laravel Forge, Ploi, etc.
Planificació de posts
- [ ] Crear workflow bàsic de CI
- [ ] Workflow per desplegar al servidor amb CD
- [ ] Afegir restriccions de branques (ex. només desplegar si és la branca “main”)
- [ ] Introduir proves amb base de dades temporal i fixtures
- [ ] Usar secrets d’entorn de manera segura