Что это
Автоматический конвейер: как только в код вносятся изменения, они сами проверяются и выкатываются на сервер — без ручных шагов.
Как используем
Почти в каждом проекте — быстрее релизы, меньше риска что-то забыть или сломать руками при выкладке.
Где CI/CD нужен бизнесу
- Правка в одном месте не должна молча ломать другое: это должны ловить тесты до выкатки.
- Новую версию нужно выкладывать одинаково каждый раз, без «забыл скопировать файл».
- Над проектом работает больше одного человека или одна сессия правок сменяет другую.
Как мы это используем
- Тесты на каждый push. В сервисе открыток UNLOCK смоук-тесты с Postgres запускаются в GitHub Actions на каждое изменение; в README отмечено 2305 проверок. Тесты падают, если файл открытки разошёлся со схемой сервиса.
- Публикация без сервера. Инструкции по подключению VPN лежат на GitHub Pages: правка файла в репозитории — и страница обновилась.
- Сборка на рабочей машине. Образ сайта студии собирается локально и загружается на сервер готовым: на сервере для сборки Nuxt мало памяти. Выкатка идёт скриптом, а в конце скрипт сам сообщает поисковикам об изменившихся страницах.
- Тесты без сети. В финансовом ассистенте около 120 тестов на pytest: разбор текста, сверка выписок, долги, наличные, выгрузка. Базе и сети они не нужны, поэтому запускаются где угодно.
Сборку в CI по кнопке закладываем, например, при публикации приложений в магазинах — раздел Приложения.
Типичные проблемы
- Конвейер без тестов. Автоматическая выкатка непроверенного кода просто быстрее доставляет ошибку. Сначала тесты, потом автоматизация.
- Тесты только руками. В части наших ботов тесты запускаются вручную, CI нет, и это честно записано в ограничения.
- Секреты в конвейере. Токены для выкатки хранятся в настройках CI, а не в репозитории.
- Нечем откатиться. Если выкатка сломала прод, нужен быстрый путь назад: предыдущий образ или копия базы.
Когда это не нужно
Для одной статической страницы или скрипта, который меняется раз в полгода, полноценный конвейер — лишняя сложность: хватит репозитория и одной команды выкатки. CI окупается, когда правок много и тесты уже есть.