Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Логгировние нескольких последовательных задач в Jenkins

jenkins
Теги: #<Tag:0x00007f7b61d73c08>

(I Keiran) #1

Добрый день!
Есть следующая задача: настроить отправку сообщений с данными об успешной / неуспешной сборке.
Немного воды: настроена автоматическая сборка проекта при помощи Jenkins. Она осуществляется “запуском команды Windows”, в качестве команды выступает скрипт на питоне. Сборка должна идти для нескольких вариантов приложения - релиз, дебаг, и несколько осей - итого 4 задачи, которые должны выполняться последовательно, но независимо от успешности предыдущей сборки (при параллельном выполнении сборка падает). Это сделано двумя вариантами: запуск следующей задачи по окончании текущей и через multijob. Ни в одном из вариантов не получается настроить сводный отчет (по всем задачам) для дальнейшей отправки на почту.
Вопрос: как собрать данные (успешная или нет каждая отдельная сборка, желательно время этой сборки, ее номер и какие коммиты в нее вошли)? Искал по плагинам, но ничего подходящего пока не нашел(( Или только кодить, только хардкор?


(Евгений Бухгаммер) #2

Заведите четыре отдельные Job’ы.Для каждой задачи определите послесборочной операцией запуск другой работы (нужно будет поставить чекбокс, чтобы сборка другого проекта запускалась, даже если текущая провалилась)

Статус (Экзит код задачи) - получить можно так: читаем

или вместо коммандлайна через скрипт вот так:

Что касается общего отчета по работам, я бы посоветовал написать свой собственный аггрегатор результатов:
что-нибудь, что постоянно динамически генерировало тебе объект, содержащий информацию по пройденным юнит-тестам. Последний Job - собирал бы сериализованные объекты раннее запущенных задач (JSON или Pickle файлы) и формировал тебе структуру, удобную тебе для отображения в отчете.


(I Keiran) #3

Изначально так и было настроено, но рассылка уходила после каждого билда. Тесты при этом не запускаются - только сам билд. И, как я подозреваю, из-за этого репорты не создаются - пробовал подключать Allure и HTML-report, в первом случае отчет пустой, во втором задача виснет на переносе файла из воркспейса по умолчанию в воркспейс, который я использую.

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


(I Keiran) #4

Итоговое решение:

  1. создается количество задач, равное количеству требуемых вариантов билда
  2. первая задача настраивается на опрос SCM на предмет изменений перед сборкой
  3. остальные задачи запускаются последовательно после выполнения первой
  4. последней задачей запускается скрипт на пайтоне, подключающийся к Jenkins по апи и вытаскивающий всю нужную информацию (результат билда, историю изменений, частично решено парсингом страниц), он же рассылает отчет всем заинтересованным.