Manual de CI/CD per a projectes amb Git

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:

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:

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