Как настроить сборку и тестирование нескольких конфигураций jenkins
Мне нужно построить и испытать на множественных конфигурациях: Линукс, ОСС и Солярис. У меня есть подчиненные узлы с надписями "linux", "osx"и " solaris". На каждая конфигурация, я хочу (a) построить (b) запустить тесты дыма (C) если тесты проходят, то полное обследование, а возможно и больше.
Я думал, что задания с несколькими конфигурациями могут быть ответом, поэтому я настраиваю задание сборки с несколькими конфигурациями и запуск параллельных сборок на каждом ОС. Задание build вызовет построение ниже по течению smoke-test, который, в поворот, запускает тестовое задание.
я столкнулся со следующими проблемами
если одна из конфигураций терпит неудачу, задание в целом терпит неудачу, и Дженкинс не будет запускать какие-либо последующие задания (например, если сборка solaris не, Дженкинс не будет работать, тесты или тесты для OSX и Linux.)
сборка 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 последовательных матричных задания для каждого шага (сборка, дымовой тест, полные тесты), но это будет означать, что если какой-либо из шагов сборки не удался, то ни один из дымовых тестов не будет запущен.