Anar al contingut

Guia

Integració i entrega contínues (CI/CD)

Un pipeline de CI/CD no és un luxe d'equips grans: és el que converteix «esperem que funcioni» en «ho sabem abans de fusionar».

Darrera actualització:

Il·lustració abstracta d’una canonada d’integració contínua amb etapes i un desplegament

CI (integració contínua) és comprovar de manera automàtica cada canvi abans d'integrar-lo. CD (entrega o desplegament continus) és portar aquest canvi a un entorn real sense passos manuals. La majoria d'equips guanya més amb una bona CI que amb qualsevol altra inversió tècnica del mateix cost.

Què comprova la CI, i en quin ordre

  1. El més ràpid primer: format i *lint*. Falla en segons i evita soroll a la revisió.
  2. Compilació / *type-check*: si no compila, res més importa.
  3. Tests unitaris: el gruix de la confiança, haurien de trigar pocs minuts.
  4. Tests d'integració i *end-to-end*: més lents i més fràgils; van al final i en paral·lel.
  5. Build de l'artefacte de producció: si es prerenderitza o empaqueta, que falli aquí i no al servidor.

Els temps importen més del que sembla

Si el pipeline triga 25 minuts, la gent deixa d'esperar-lo: fusiona abans que acabi, acumula canvis i perd la relació causa-efecte entre un *commit* i la seva fallada. L'objectiu raonable és tenir una resposta de CI en menys de deu minuts. S'aconsegueix amb cau de dependències, paral·lelització i no repetir feina entre etapes.

Gates abans de producció

Entre «la CI passa» i «és a producció» convé posar comprovacions que no són codi: revisió aprovada, migracions de base de dades revisades a part, i una manera de tornar enrere en un minut. El desplegament hauria de ser avorrit; si genera adrenalina, falta automatització.

  • Desplegament reproduïble: el mateix artefacte que s'ha provat és el que es publica.
  • Tornada enrere ràpida: rellançar la versió anterior no pot dependre de reconstruir res.
  • Salut després del desplegament: una comprovació automàtica que el servei respon abans de donar per bona la publicació.

Entorns

Com a mínim, un entorn d'integració que s'assembli a producció (mateixos serveis, dades anonimitzades) on provar abans de publicar. Molts equips s'estalvien incidències només per tenir aquest entorn i fer-lo servir de debò.

Preguntes freqüents

El que ens solen preguntar

Necessito CD si ja tinc CI?

No és obligatori, però el desplegament manual és una font recurrent d'errors i de dependència d'una persona. Automatitzar-lo sol sortir a compte en poques setmanes.

Quant hauria de trigar el pipeline?

Idealment menys de deu minuts per a la resposta que bloqueja una fusió. Els tests més lents es poden executar en paral·lel o després, sense bloquejar.

GitHub Actions, GitLab CI, Jenkins...?

Per a la majoria de projectes, la CI integrada a la teva plataforma de codi (Actions o GitLab CI) és suficient i més barata de mantenir. Jenkins té sentit en organitzacions amb necessitats molt específiques d'infraestructura.

I si no tenim tests?

Es comença per la CI que sí que es pot tenir avui (lint, build, type-check) i per cobrir amb tests la part del codi que més canvia o més incidències genera. No cal el 100 % per obtenir valor.

Següent pas

Mitja hora ben invertida

Explica'ns el problema en una trucada curta. En sortim amb una primera orientació de per on aniria i què implicaria, sense compromís i sense presentació comercial.