Непрерывная интеграция (CI)
Практика разработки ПО, при которой разработчики несколько раз в день интегрируют изменения кода в общий репозиторий, с автоматической проверкой каждой интеграции.
CI был описан Гради Бучем в 1991 году и популяризирован Кентом Беком как часть Extreme Programming. Типичный пайплайн: триггер → сборка → тесты → линтинг/сканирование → отчёт. Популярные платформы: GitHub Actions, GitLab CI/CD, Jenkins, CircleCI.
graph LR
Center["Непрерывная интеграция (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;
🧒 Простыми словами
CI — это как умный учитель, который проверяет домашнее задание после каждой решённой задачи. Вместо того чтобы в конце месяца узнать об ошибке на первой странице, вы узнаёте о ней за секунды и сразу исправляете.
🤓 Expert Deep Dive
Эффективный CI основан на пирамиде тестирования (много юнит-тестов, мало E2E-тестов) и лучше всего работает в паре с Trunk-Based Development. CI является предпосылкой для CD (Continuous Delivery/Deployment).
❓ Частые вопросы
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.