Те, що ви обговорюєте у своєму запитанні, - це фактично 3 різні поняття:
Безперервна інтеграція в його суть вносить невеликі зміни і часто синхронізує ці зміни з "глобальною правдою". Замість того щоб робити замовлення і тримати його протягом тижня, розробник повинен працювати над завданнями, які можна виконати протягом дня, щоб його код ніколи не надто сильно синхронізувався з основним сховищем.
Для того, щоб досягти цього, не завдаючи болю своїй команді (тобто перевірка джерела, який не створює або не порушує існуючий функціонал). Розробник повинен переконатися, що його код не "порушує збірку". Якщо зробити це вручну, це додасть додаткових витрат на процес розробки (подумайте про проект, який потребує тривалого часу для створення та / або має багато взаємозалежностей, де зміна на один рядок коду може вплинути на додаток несподіваними способами).
Щоб пом'якшити цю ситуацію, ми використовуємо інші прийоми, щоб зняти цю накладну.
Ми використовуємо автоматизовані збірки, щоб перевірити джерело і побудувати його за бажанням, запускаючи автоматизовані тести, які перевіряють, чи працює програма, як слід (цей крок корисний лише як набір тестів).
Подальший крок безперервної доставки вирішує вашу проблему з базою даних та іншими проблемами. Ідея тут полягає в тому, щоб забезпечити деякий рівень версій для бази даних та інших факторів зовнішнього середовища, щоб ми могли якомога швидше підтвердити, що програма працює в середовищі, наскільки це можливо наближене до виробництва .
builds
іbuild
тому, що не знав, який з них використовувати.