Как настроить мультиконфигурацию сборки и тестирования jenkins - PullRequest
7 голосов
/ 02 июля 2011

Мне нужно собрать и протестировать несколько конфигураций: linux, osx и solaris.У меня есть подчиненные узлы с надписями «linux», «osx» и «solaris».В каждой конфигурации я хочу (a) собрать (b) запустить тесты дыма (c) если тесты дыма пройдут, затем запустить полные тесты и, возможно, еще.

Я думал, что задания по конфигурированию могут бытьответ, поэтому я настроил работу по сборке нескольких конфигураций, и она запускает параллельные сборки на каждой ОС.Задание сборки запускает последующую сборку дымовых тестов, которая, в свою очередь, запускает задание полного тестирования.

Я столкнулся со следующими проблемами

  1. В случае сбоя одной из конфигураций задание в целом завершается неудачно, и Jenkins не будет запускать никакие последующие задания (например, при сбое сборки Solaris Jenkins не будет запускать тесты дыма или полные тесты для osx и linux).

  2. Сборка Solaris занимает примерно вдвое больше времени, чем остальные (порядка часа), и я бы предпочел, чтобы тесты дыма в linux и osx не дожидались сборки Solaris дофиниш.

Означает ли это, что у меня осталось три ручных создания конвейеров заданий, и я поставил их за "начальную работу" (то есть создание и связывание вручнуюследующие работы)?

build-linux   smoke-test-linux   full-test-linux
build-osx     smoke-test-osx     full-test-osx
build-solaris smoke-test-solaris full-test-solaris

Я что-то упустил очевидное?

Ответы [ 2 ]

4 голосов
/ 04 июля 2011

Насколько я знаю, ответ заключается в создании 3 матричных заданий, по одному для каждой системы. Затем они будут иметь 3 подзадачи (сборка, тест на дым, полный тест) с заданием сборки в качестве пробного камня.

3 голосов
/ 15 декабря 2011

Задумывались ли вы о том, чтобы объединить сборку, тестирование на дым и полные тесты в одном задании с несколькими конфигурациями? Кроме того, что это немного грязно, это должно работать для вас.

Чтобы ответить на вашу первую проблему: чтобы запустить последующее задание независимо от результата, используйте параметризованную сборку триггера, чтобы запустить ее после завершения (всегда триггер), а затем установите флажок «построить без параметров»

Чтобы ответить на ваш второй вопрос: либо используйте всеохватывающее многоконфигурационное (матричное) задание, либо используйте три отдельных потока заданий, как вы упомянули. ОБНОВЛЕНИЕ: вы можете запустить 3 последовательных матричных задания для каждого шага (сборка, тест на дым, полные тесты), но это будет означать, что если какой-либо из этапов сборки будет неудачным, то ни один из тестов на дым не будет выполнен.

...