В настоящее время я использую jenkins/hudson для непрерывной интеграции большого проекта С++. У нас есть отдельные проекты для ствола и каждой ветки. Кроме того, есть некоторые связанные проекты для Java-кода, но настройка для них довольно проста прямо сейчас (мы можем сделать более позднее, хотя). Проекты С++ выполняют следующие действия:
- Создает все с параметрами для того, нужно ли переконфигурировать, выполнить чистую сборку или использовать новую проверку.
- Необязательно создает и запускает все тесты
- Опционально запускает все тесты, используя memgrick Valgrind
- Запускает cppcheck
- Генерирует документацию по doxygen
- Публикует отчеты: модульные тесты, valgrind, cppcheck, предупреждения компилятора, SLOC, открытые задачи и покрытие кода (с использованием gcov, gcovr и плагина cobertura)
- Развертывает код в ночное время или по требованию в тестовую среду и репозиторий пакетов
Все настраивается для автоматических сборок и факультативных для сборки по требованию. Под ним есть bash script, который управляет большей частью этого, что дальше зависит от нашей системы сборки, которая использует automake и autoconf вместе с пользовательскими сценариями bash.
Мы начали использовать Hudson (в то время), потому что это то, что использовали Java-ребята, и нам просто нужны ночные сборки. С тех пор мы добавили намного больше и продолжаем добавлять больше. В некотором смысле Хадсон велик, но, конечно, не идеален.
Я посмотрел на другие решения, и единственное, что похоже, может быть заменой buildbot. Будет ли строй лучше для этой ситуации? Стоит ли инвестировать, так как мы уже используем Хадсон? Почему?
EDIT: Кто-то спросил, почему я не нашел Хадсона/Дженкинса идеальным. Короткий ответ заключается в том, что все можно улучшить. Я просто задаюсь вопросом, является ли Дженкинс лучшим текущим решением для моего варианта использования или есть ли что-то лучшее (buildbot?), Которое было бы легче поддерживать в долгосрочной перспективе, даже когда появятся новые требования.