📍 CI/CD: как код проходит путь от коммита до продакшена
Кратко: CI/CD — это практика непрерывной интеграции и непрерывной доставки, которая превращает хаотичное «заливаю на прод в пятницу вечером» в предсказуемый, автоматизированный конвейер. Вы закоммитили код — через несколько минут он уже в продакшене, с пройденными тестами, собранными артефактами и задеплоенный без участия человека. Это стандарт современной разработки, без которого не обходится ни одна серьёзная команда.
▫️Как дошли до жизни такой · 1990-е — Разработка по водопадной модели: код пишется месяцами, потом интеграция превращается в ад, релизы — раз в полгода · 1997 г. — Кент Бек и Уорд Каннингем внедряют практику непрерывной интеграции в проекте Chrysler C3. Идея: мержить код в общую ветку каждый день, а не раз в месяц · 2000-е — Появляются первые CI-серверы: CruiseControl, Hudson (позже Jenkins). Ручное тестирование начинает заменяться автоматическим · 2009–2010 гг. — Джез Хамбл и Дэвид Фарли популяризируют термин Continuous Delivery. Книга «Continuous Delivery» становится библией DevOps · 2010-е — Взрыв SaaS-инструментов: Travis CI, CircleCI, GitLab CI, GitHub Actions. Контейнеризация (Docker) делает деплой воспроизводимым · 2020–2026 гг. — CI/CD становится AI-нативным: автогенерация пайплайнов, автоисправление тестов, AI-ассистенты в GitLab и GitHub
▫️Что такое CI (Continuous Integration) Непрерывная интеграция — это практика частого слияния кода в общую ветку (main/master) с автоматической проверкой. Что происходит: 1. Разработчик пушит код в репозиторий 2. CI-сервер запускает пайплайн: · Сборка проекта · Запуск unit-тестов (проверка логики) · Запуск линтеров (проверка стиля) · Анализ покрытия кода тестами · Проверка безопасности (SAST) 3. Если всё зелено — код принимается в ветку. Если красный — команда чинит в первую очередь Зачем: мержить часто и маленькими порциями, ловить ошибки сразу, а не за день до релиза.
▫️Что такое CD (Continuous Delivery / Deployment) Continuous Delivery — код всегда готов к релизу. После успешного CI автоматически собирается артефакт (докер-образ, jar-файл), который деплоится в тестовую среду, а решение о деплое в прод принимает человек. Continuous Deployment — шаг дальше. Всё автоматизировано до конца: код проходит CI и улетает в прод без нажатия кнопки. Что добавляется в пайплайн: · Сборка и публикация артефакта в реестр · Деплой в dev/staging среду · Запуск интеграционных и e2e-тестов · Если всё хорошо — автоматический деплой в production · Канареечные деплои (сперва на 1% трафика) · Автоматический откат при ошибках
CI/CD пайплайн на примере (GitHub Actions) name: CI/CD Pipeline on: push: branches: [main] jobs: build-and-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 - run: npm ci - run: npm run lint - run: npm test - name: Build Docker image run: docker build -t myapp:${{ github.sha }} . - name: Push to Registry run: docker push myapp:${{ github.sha }} deploy: needs: build-and-test runs-on: ubuntu-latest steps: - name: Deploy to Kubernetes run: kubectl set image deployment/myapp app=myapp:${{ github.sha }}
▫️Современное положение (2026 · GitHub Actions — лидер по популярности среди разработчиков, особенно в opensource · GitLab CI — предпочтение для тех, кто хочет единый инструмент (репозиторий + CI/CD + реестр) · Jenkins — постепенно уступает место, но в enterprise ещё живёт за счёт legacy и бесконечной гибкости · AI-интеграция — GitLab и GitHub предлагают автогенерацию пайплайнов, подсказки для фикса тестов, AI-ассистентов для дебага · Тренды — shift-left: тестирование безопасности и качества сдвигается влево, на этап CI. Все проверки запускаются как можно раньше
#cicd #devops #githubactions #gitlabci #continuousintegration #continuousdelivery