CI/CD
Пайплайны, сборка, выкатка. От git push до прода без ручных шагов.
Основы
Какую боль решает CI/CD: ручной деплой, «у меня работает», интеграционный ад. Что значат буквы.
Что прогоняется на каждый push, fail fast, зелёный main и почему сливать надо часто.
Две расшифровки CD: непрерывная доставка (релиз кнопкой) и непрерывное развёртывание (автоматом в прод).
Stages, jobs, runners, артефакты, кеш, переменные и секреты, окружения — общий словарь CI/CD.
GitLab CI, GitHub Actions, Jenkins, CircleCI, Argo CD — кто есть кто и чем отличаются.
Собираем простой .gitlab-ci.yml с нуля: hello-world, стадии, артефакты, тег по SHA.
Семь вопросов на CI, Delivery vs Deployment, анатомию пайплайна и инструменты.
Практика в GitLab
Десять шагов руками в GitLab: от первого job до сборки в контейнере, кеша, секретов и ручного выката.
Заводим репозиторий, в котором будем гонять пайплайны: клонируем учебный проект, переключаем origin на свой и делаем первый push.
Пишем минимальный .gitlab-ci.yml, пушим и смотрим, как GitLab сам поднимает контейнер и выполняет команду.
Разбиваем пайплайн на build и test, смотрим, как стадии идут по очереди и почему упавший build отменяет всё, что за ним.
Почему файл из build не виден в test и как artifacts решают эту проблему. Собираем папку public и забираем её из следующей стадии.
Добавляем стадию deploy и job pages. GitLab публикует папку public, и сайт открывается по ссылке без единого ручного действия.
Встроенные CI_-переменные, свои значения в .gitlab-ci.yml и masked-секреты в настройках проекта. Плюс двоеточие, которое ломает YAML.
Меняем echo на реальный сборщик: образ node, npm ci, esbuild и dist в артефактах. Разбираемся, откуда берётся окружение job.
Ускоряем установку зависимостей между прогонами. Ключ по хешу lock-файла и разбор, почему кешировать node_modules при npm ci бессмысленно.
Разводим выкат по веткам, ставим ручной гейт на прод и разбираемся, почему rules вытеснили only/except.
Зелёный job, который врёт, пароль в логе, latest вместо версии, монолитная задача и мёртвый only. Каждый разобран на живом прогоне.
Глубже
Как выглядит правильный CI/CD-пайплайн: порядок этапов, fail-fast, быстрая обратная связь и где проходит граница деплоя.
Как катить новую версию без даунтайма и с возможностью отката: rolling, blue-green и canary, их плюсы и риски.
Ручные подтверждения, защищённые окружения, параллельные ветки fan-out/fan-in и условный запуск job.
Чем кеш отличается от артефакта, как кешировать зависимости и слои образа и как передавать результат между job.
Какие проверки безопасности встраивают в CI, чем они отличаются и почему сканер — процесс, а не один инструмент.