Непрерывная интеграция как термин относится к двум различным идеям.
Первый - это рабочий процесс: вместо того, чтобы все в команде работали над собственной ветвью, а затем после нескольких недель программирования пытаются объединить свои изменения с основной, эти изменения интегрируются (почти) непрерывно. Это позволяет проблемам всплыть на поверхность раньше и избежать несовместимых изменений. Однако это требует, чтобы мы могли легко проверить, работает ли изменение.
Вот тут и приходит вторая идея, которая оказалась гораздо более популярной. CI-сервер - это чистая среда, в которой изменения тестируются как можно быстрее. Чистая среда необходима для того, чтобы сборка была воспроизводимой. Если он работает один раз, он всегда должен работать. Это позволяет избежать проблем «но это сработало на моей машине». В частности, CI-сервер полезен, когда ваше программное обеспечение работает в разных системах или в разных конфигурациях, и вы должны быть уверены, что все работает.
Отсутствие шага сборки не имеет значения. Однако CI имеет смысл, только если у вас есть набор тестов. Этот набор тестов должен быть автоматическим и не должен иметь сбоев. Если тесты не пройдены, соответствующий разработчик должен получить уведомление, чтобы они могли исправить возникшую проблему («нарушение сборки», даже если сборка не является компиляцией).
Оказывается, такой сервер полезен не только для тестирования. Фактически, большинство программного обеспечения CI действительно дрянно проводят тесты в различных конфигурациях, но хорошо справляются со всеми видами работ. Например, в дополнение к «непрерывным» модульным тестам, может быть полный тест как ночная сборка. Программное обеспечение может быть протестировано с несколькими версиями Python, различными версиями библиотеки. Веб-сайт может быть проверен на наличие мертвых ссылок. Мы можем запустить статический анализ, проверки стиля, инструменты тестирования покрытия и т. Д. Поверх кода. Документация может быть сгенерирована. Когда все наборы тестов пройдены, можно начать процесс упаковки, чтобы вы были готовы выпустить свое программное обеспечение. Это полезно в гибкой настройке, когда вам нужен постоянно развертываемый (и демо) продукт. С появлением веб-приложений появилась и идея постоянного развертывания.: Если все тесты пройдены, мы можем автоматически отправить изменения в производство. Конечно, это требует, чтобы вы были действительно уверены в своем наборе тестов (если нет, у вас есть большие проблемы).