Ну, "это зависит":)
Мы используем нашу систему CI для:
- сборка и юнит тест
- развертывание в одном компьютере, запуск интеграционных тестов и анализ кода
- развертывание в лабораторной среде
- запустить приемочные испытания в подобной системе
- отбрасывание сборок, которые переходят на отбрасывание кода для развертывания prod
Это для нового проекта, включающего около дюжины сервисов и баз данных, развернутых на более чем 20 серверах, которые также зависели от полдюжины других «внешних» сервисов.
Использование инструмента CI для развертывания вашего продукта в производственной среде в качестве реалистичной цели? опять ... "это зависит"
Зачем вам это нужно?
- если у вас есть процесс, вы можете откатывать (и откатывать) изменения быстрее и чаще
- меньше шансов на человеческую ошибку
- вы можете протестировать ту же стратегию развертывания в тестовой среде, прежде чем приступить к работе, и обнаружить проблемы раньше
Некоторые технические вопросы, с которыми вы должны ответить, прежде чем ответить на них:
- каковы требования к времени безотказной работы вашей системы - разрешено ли вам время простоя или оно должно быть 24/7?
- Есть ли у вас процессы контроля изменений, которые требуют вмешательства человека / одобрения?
- Достаточно ли устойчиво ваше развертывание, чтобы любой компонент мог откатиться до заведомо исправного состояния в случае сбоя развертывания?
- предназначена ли ваша система для работы с различными версиями служб или клиентов в случае сбоя одного или нескольких развертываний компонентов (и у вас есть вышеуказанный откат до последнего известного состояния)?
- имеет ли процесс интеллектуальные возможности для частичного развертывания, когда компонент не может обрабатывать смешанные версии своих зависимостей / клиентов?
- как вы справляетесь с развертыванием / обновлением базы данных?
- У вас есть мониторинг, чтобы вы знали, что что-то идет не так?
Вот несколько недавних связанных ссылок о автоматизации и создании необходимых вам инструментов .
Когда дело доходит до того, что чем сложнее ваша система, тем сложнее она автоматизирует все, но это не значит, что это не достойная цель, просто для этого нужно гораздо больше усилий и силы воли - все от знания трудностей, с которыми вы столкнетесь, проблем, которые вы должны учитывать (сбой произойдет ), политических проблем построения инфраструктуры (в сравнении с большим количеством функций продукта).
Теперь вот большой секрет ... технические проблемы сложны, но не невозможны ... политические проблемы могут быть непреодолимыми. Все об этом стоит денег, будь то время разработки или покупка сторонних решений. Итак, действительно, можете ли вы создать решение за 1, 10, 100 или 1 миллион долларов?
Какое бы решение вы ни выбрали, сначала убедитесь, что автоматизация работоспособна, а затем завершите ... ... убедитесь, что у вас есть максимально надежное решение для развертывания в тестовой среде, а не хрупкое решение, которое развертывается на производстве.