Ciągła Integracja (CI)

Praktyka programistyczna, w której deweloperzy scalają zmiany kodu z głównym repozytorium wiele razy dziennie, a każde scalenie jest automatycznie weryfikowane.

CI zostało sformalizowane przez Grady'ego Boocha w 1991 r. i spopularyzowane przez Kenta Becka w ramach Extreme Programming. Typowy pipeline: wyzwalacz → build → testy → lint/skan → raport. Platformy: GitHub Actions, GitLab CI/CD, Jenkins.

        graph LR
  Center["Ciągła Integracja (CI)"]:::main
  Rel_parallelism["parallelism"]:::related -.-> Center
  click Rel_parallelism "/terms/parallelism"
  Rel_agile_methodology["agile-methodology"]:::related -.-> Center
  click Rel_agile_methodology "/terms/agile-methodology"
  Rel_raid["raid"]:::related -.-> Center
  click Rel_raid "/terms/raid"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 Wyjaśnij jak 5-latkowi

CI to jak mądry nauczyciel, który sprawdza pracę domową po każdym zadaniu. Zamiast czekać do końca miesiąca i dowiedzieć się o błędzie na stronie pierwszej, dowiadujesz się o nim w ciągu sekund i od razu go poprawiasz.

🤓 Expert Deep Dive

Skuteczna CI opiera się na piramidzie testów (dużo testów jednostkowych, mało E2E) i najlepiej działa z Trunk-Based Development. Jest warunkiem wstępnym dla CD (Ciągłego Dostarczania/Wdrażania).

❓ Częste pytania

What is the difference between CI and CD?

CI (Continuous Integration) automatically builds and tests code on every commit, ensuring the codebase is always in a working state. CD (Continuous Delivery or Deployment) goes further, automatically delivering or deploying that verified code to staging or production environments.

What is 'integration hell'?

Integration hell occurs when developers work on separate branches for a long time and then try to merge everything at once. The resulting merge conflicts and hidden incompatibilities can take days or weeks to resolve. CI prevents this by integrating small changes frequently.

Do I need CI for a solo project?

It's highly recommended even for solo projects. CI automatically runs your tests on every commit, catching regressions you might miss, and platforms like GitHub Actions offer generous free tiers.

📚 Źródła