Monitoring & CI/CD

Что такое CI/CD (GitLab CI, GitHub Actions)

Что это

Автоматический конвейер: как только в код вносятся изменения, они сами проверяются и выкатываются на сервер — без ручных шагов.

Как используем

Почти в каждом проекте — быстрее релизы, меньше риска что-то забыть или сломать руками при выкладке.

Где CI/CD нужен бизнесу

  • Правка в одном месте не должна молча ломать другое: это должны ловить тесты до выкатки.
  • Новую версию нужно выкладывать одинаково каждый раз, без «забыл скопировать файл».
  • Над проектом работает больше одного человека или одна сессия правок сменяет другую.

Как мы это используем

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

Сборку в CI по кнопке закладываем, например, при публикации приложений в магазинах — раздел Приложения.

Типичные проблемы

  • Конвейер без тестов. Автоматическая выкатка непроверенного кода просто быстрее доставляет ошибку. Сначала тесты, потом автоматизация.
  • Тесты только руками. В части наших ботов тесты запускаются вручную, CI нет, и это честно записано в ограничения.
  • Секреты в конвейере. Токены для выкатки хранятся в настройках CI, а не в репозитории.
  • Нечем откатиться. Если выкатка сломала прод, нужен быстрый путь назад: предыдущий образ или копия базы.

Когда это не нужно

Для одной статической страницы или скрипта, который меняется раз в полгода, полноценный конвейер — лишняя сложность: хватит репозитория и одной команды выкатки. CI окупается, когда правок много и тесты уже есть.

← Все термины

Нужен сайт, бот или автоматизация?

Термины объяснили — теперь давайте к делу: расскажите о задаче, а мы переведём её на понятный план работ.