Как настроить сборку и тестирование нескольких конфигураций jenkins

Мне нужно построить и испытать на множественных конфигурациях: Линукс, ОСС и Солярис. У меня есть подчиненные узлы с надписями "linux", "osx"и " solaris". На каждая конфигурация, я хочу (a) построить (b) запустить тесты дыма (C) если тесты проходят, то полное обследование, а возможно и больше.

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

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

  1. если одна из конфигураций терпит неудачу, задание в целом терпит неудачу, и Дженкинс не будет запускать какие-либо последующие задания (например, если сборка solaris не, Дженкинс не будет работать, тесты или тесты для OSX и Linux.)

  2. сборка solaris занимает примерно в два раза больше времени, чем другие (на порядка часа), и я бы предпочел Linux и osx smoke тесты не дождитесь завершения сборки solaris.

означает ли это, что я остался с ручной работой трех трубопроводов заданий, и помещая их за работу" start-all " (т. е. создание и ручная цепочка следующие задания)?

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 ответов


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


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

чтобы ответить на ваш первый вопрос: чтобы запустить нисходящее задание независимо от результата, используйте параметризованную сборку триггера для запуска по завершении (всегда триггер), а затем проверьте "build w/o parameters"

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