CI: Как внедряют непрерывную интеграцию в сложные монолитные системы?
Всем привет, начал изучать тему CI/CD, и в процессе обучения сразу начинаю представлять, как это может быть использовано в нашем проекте.
У нас большая и сложная монолитная система, без докера и прочего.
У каждого разработчика есть своя копия dev-среды.
Сейчас план минимум: сделать так, чтобы при git pull, в зависимости от разработчика, ветка автоматически заливалась на его dev-среду для тестирования — здесь все понятно, никакой магии.
И второе, это автоматический запуск тестов, при определенных действиях, например принятие merge-request с мастером.
Что мне непонятно:
Чаще всего, в обучающих материалов пишут, что перед запуском тестов Создается Сборка и уже в ней запускаются тесты. Вроде логично, но в этой модели непонятно как создавать сборку, если у нас крупный монолит, с кучей зависимых сервисов ? Как это вообще решается ?
Неужели для этого нам придется все переносить на докер, чтобы можно было простым образом развернуть ?
topuserman, пилить монолит. Если монолит легаси, а речь про интеграционное тестирование этого монолит как чёрный ящик, то я вижу только вариант с моками всех зависимых сервисов для проведения изолированного тестирования монолита
И второе, это автоматический запуск тестов, при определенных действиях, например принятие merge-request с мастером.
Что мне непонятно:
Чаще всего, в обучающих материалов пишут, что перед запуском тестов Создается Сборка и уже в ней запускаются тесты.
Начните с простого: напишите последовательность шагов, которые вы сегодня запускаете вручную, чтобы собрать приложение. И задеплоить (хотя формально это уже CD).
А потом думайте-проверяйте, как перенести этот сценарий в выбранный сервис CI.
Конкретно насчет тестов - о каких тестов идет речь? Unit? Integration? End-to-end?