Википедия дает довольно хорошее резюме большинства этих терминов. Вот мой взгляд на них:
Автоматизация сборки - это автоматизация создания программного обеспечения вместо вызова компилятора вручную. Это может быть достигнуто с помощью таких инструментов, как, например, Make или Ant .
Автоматизация развертывания - это сборка встроенного программного обеспечения и его развертывание или установка в тестовой или производственной системе.
Непрерывная интеграция означает, что автоматизированный процесс непрерывно создает ваше программное обеспечение, поскольку разработчики проверяют код и запускают модульные тесты, чтобы гарантировать, что код все еще работает. Например, каждые 15–30 минут сервер может просыпаться, сканировать VCS на предмет новых проверок, а затем обновлять и создавать проект, если были внесены какие-либо изменения. Помимо выполнения этапов компиляции, это также прекрасная возможность для запуска автоматических модульных тестов и проверок качества кода .
Непрерывная доставка - это комбинация всех предыдущих концепций, когда сборки программного обеспечения также развертываются в тестовой системе, возможно с выполненными тестами и созданными отчетами.
По крайней мере, вам нужна автоматизация сборки, то есть какой-то сценарий сборки. Это позволяет вам нажать одну кнопку или выполнить одну команду для построения вашего проекта. Преимущество этого заключается в уменьшении количества ошибок при выполнении шагов вручную. Сложные среды сборки могут включать в себя генерацию кода (например, DAO из конфигов, интерфейсный код, такой как JAXB ), компиляцию кода, его упаковку, настройку метаданных и т. Д. Для выполнения множества задач необходим контрольный список: почему бы не сделать контрольный список ваш сценарий сборки и использовать инструмент для его запуска? Это уменьшает ошибки и обеспечивает последовательность.
Далее следует CI: это действительно хорошо иметь, но не обязательно. Это помогает выявить проблемы сборки на ранней стадии. Если у вас есть несколько разработчиков, проверяющих код в течение дня и, возможно, не синхронизирующих свои рабочие области постоянно, существует риск, что их изменения будут мешать друг другу. Я имею в виду именно ошибки статического кода, а не конфликты контроля версий. Сервер сборки CI снизит этот риск.
Наконец у нас есть шаги развертывания. Идея заключается в том, чтобы сэкономить время и уменьшить количество ошибок при развертывании программного обеспечения вручную. Как и в случае с автоматизацией сборки, существует сто способов испортить развертывание программного обеспечения. Я лично задерживался в офисе, чтобы решить проблемы с ручным развертыванием во многих случаях, когда нам нужна работающая система для клиентов, прибывающих завтра на место. Автоматизация нескольких систем создает больший риск: вместо того, чтобы одна система могла выйти из строя или иметь странные ошибки, теперь у нас есть несколькосистемы, которые могут пойти не так. Однако этот риск намного ниже, чем если бы кто-то пропустил шаг в контрольном списке или ввел неправильную команду и испортил развертывание. Если вам повезет, вы можете просто восстановить резервную копию БД и начать заново, если вам не повезет, ошибка может привести к неправильной работе системы. Это программный дефект? Не правильно ли техник установил конфигурацию? Это требует времени для диагностики, времени, которого у вас может не быть, и времени, которое не нужно тратить, если вы автоматизируете процесс.