В даний час я використовую jenkins / hudson для постійної інтеграції великого, в основному, проекту C ++. У нас є окремі проекти для магістралі та кожної галузі. Крім того, є кілька пов'язаних проектів для коду Java, але налаштування для них є досить простими зараз (хоча ми можемо зробити більше пізніше). Проекти С ++ роблять наступне:
- Будує все з варіантами, чи потрібно переналаштувати, виконати чисту збірку або скористатися новим замовленням
- За бажанням створює та запускає всі тести
- За бажанням запускає всі тести за допомогою мемчека Valgrind
- Запускає cppcheck
- Створює документацію про кисень
- Публікує звіти: модульні тести, valgrind, cppcheck, попередження компілятора, SLOC, відкриті завдання та охоплення коду (за допомогою gcov, gcovr та плагіна cobertura)
- Розгортає код щоночі або на вимогу до тестового середовища та сховища пакетів
Все можна налаштувати для автоматичної збірки та необов’язково для збірки на вимогу. Знизу є скрипт bash, який контролює більшу частину цього, що далі залежить від нашої системи збірки, яка використовує automake та autoconf разом із користувацькими сценаріями bash.
Ми почали використовувати Хадсон (на той час), тому що саме цим користувались хлопці Java, і ми просто хотіли нічних збірок. З тих пір ми додали набагато більше і продовжуємо додавати більше. У чомусь Хадсон чудовий, але, звичайно, не ідеальний.
Я розглядав інші рішення, і єдиним, хто схожий на заміну, є buildbot. Чи буде buildbot краще для цієї ситуації? Чи варто інвестування, оскільки ми вже використовуємо Гудзон? Чому?
РЕДАГУВАТИ : Хтось запитав, чому я не вважаю Гудзона / Дженкінса ідеальним. Коротка відповідь - все можна покращити. Мені просто цікаво, чи є Дженкінс найкращим поточним рішенням для мого випадку використання, чи є щось краще (buildbot?), Яке було б простіше підтримувати в довгостроковій перспективі, навіть коли з’являються нові вимоги.