Існує одна фундаментальна проблема щодо постійної інтеграції (CI), яка ідеально відображена у вашому запитанні: практику CI важко реалізувати та захищати, оскільки програмне забезпечення сервера CI не є тривіальним для налаштування, а також не тривіально для того, щоб ваші проекти почали працювати та працювати через CI сервер. З цим стає важко реально зрозуміти, де взагалі виграш у прийнятті ІС.
Перш за все, CI - це розуміння та якість. Хороший CI наближає вас до вашого проекту, дає вам належний відгук про показники якості, документацію, відповідність стандартам кодування тощо. Він повинен надавати вам інструменти для легкого візуалізації всього цього, а також дозволяє вам легко і легко розпізнавати пов’язати набір змін із конкретним знімком усіх цих показників проекту.
Йдеться не лише про тестування одиничних тестів. Зовсім ні! Що підводить мене до якості. CI сприймає помилки, не уникає їх і не відкидає. Що це робиться, це просто забезпечити вам інструмент для виправлення помилок на початку, а не пізніше. Таким чином, ви дійсно не здійснюєте раніше перевірений код на сервері CI. Хоча ви повинні прагнути вводити чистий і не порушений код, ви фактично використовуєте сервер CI, щоб автоматично запустити конструктор інтеграції автоматично через ваш код і дати йому оцінити, чи все вийшло правильно. Якщо є, акуратне! Якщо це не сталося, немає жодних проблем - хороші практики ІС стверджують, що наступним пріоритетом має бути лише виправлення того, що було порушено. Який у хорошому сервері CI вам слід легко вказати.
Зі збільшенням чисельності команди інтеграція коду кожного природно стає складнішою. Завданням централізованого сервера CI повинно бути тестування всіх інтегрованих частин і зняття цього тягаря з членів команди. Таким чином, ви повинні мати всіх, хто здійснює раннє (і як можна більш чітке), а потім моніторинг стану складання (зазвичай там задіяно сповіщення). І знову, якщо щось зламається через певну відданість розробника, це негайно стає його відповідальністю виправити це і негайно повернути ці автоматизовані збірки повернутися до статусу ОК.
Отже, ви бачите, на мій погляд, кожен окремий проект має вигоду від постійної інтеграції. Справа в тому, що до цих пір, в силу вражаючих складностей кожного сервера CI, про який я знаю, люди справді захищали практику CI на менших / простіших проектах. Тому що, давай, людям доводиться робити більше, ніж витрачати дні на налаштування некрасивого, надмірно складного, недостачаного, роздутого програмного забезпечення.
У мене була ця саме така проблема, і саме це змусило мене розвивати Сінтіент у вільний час приблизно від року тому. Моя передумова полягала в тому, щоб спростити встановлення, налаштування та використання, а також забезпечити її доставку за тими показниками якості, які всі інші в значній мірі виходять з ладу або недоїдають. Отож, після цієї тривалої відповіді приходить мій безсоромний штрих із зазначенням посилання на GitHub для проекту (який є безкоштовним та відкритим кодом, natch). Він також має деякі приємні скріншоти, мабуть. :-) https://github.com/matamouros/cintient
Сподіваюся, я вам допомогла.
(ПРИМІТКА. Відредаговано після коментаря Брайана Оклі про те, що мені потрібно було більше часу, щоб створити кращу відповідь. Я також вважаю, що він мав рацію.)