Я вижу одно возможное решение, не уверен, что это полезно, но, конечно, это попытка.
Шаги алгоритма:
==============
1) Поддерживать файл Direct Parent-Child (т. Е. JobA: JobB, JobA: JobC, JobA: JobC, JobC: JobD, ....), т. Е. Этот файл сообщит, что для каждого Job X , что являются прямыми дочерними / нижестоящими заданиями этого. С помощью скрипта Jenkins Groovy это может быть легко сгенерировано / доступно. PS: Вы можете добавить больше столбцов в этот файл, например, JobA: JobB: Build: Sequential или JobA: JobB: Test: Parallel, чтобы получить еще лучшие горизонтальные метрики для расчета времени выполнения / на данный шаг (сборка, тестирование) , развернуть и т. д.), а также указывать, называется ли родительское задание дочерним заданием в последовательности или параллельно с двумя или более заданиями) и соответствующим образом рассчитывать показатели.
2) Внутри «Построить представление конвейера» Настройте (Настройки), установите номер. заданий, которые будут отображаться как 1.
PS : Вы можете установить это значение равным 5, 10 или более, если вы хотите захватить данный номер сборки конвейера этого задания основного конвейера.
Для целей тестирования я показываю только 1 прогон сборки конвейера.
3) В Linux используйте curl
, получите информацию HTML-страницы «Просмотр исходного кода» в имени сборочного конвейера * ИМЯ 1022 * ( PS : Это НЕ на основной работе трубопровода).
то есть ** не для jobA или xxvt-main или ** в этом случае, но использовать URL-адрес просмотра имени (который показывает весь конвейер). Давайте предположим, что имя представления (через плагин Build Pipeline View) было создано как " MyPipelineView "
например: curl -s http://my-jenkins-server:8080/view/MyPipelineView/ > /tmp/9.txt
Это даст вам HTML-контент.
Сохраните эту информацию в каком-то файле (Временный). Давайте предположим, что я сохранил его в /tmp/9.txt
3) Запустите следующую команду, чтобы получить номер сборки задания. Согласно второму меньшему изображению конвейера (в моем посте), результат будет:
grep -o "\"extId\":\"[a-zA-Z0-9_-][a-zA-Z0-9_-]*#[0-9][0-9]*\"" /tmp/9.txt
Это даст вам вывод наподобие (используйте sed / cut, чтобы сделать его более чистым):
"extId":"xxvt_main#157"
"extId":"xxvt_splunk_run_collect_operation#29"
"extId":"xxvt_splunk_run_process_operation#29"
"extId":"xxvt_splunk_update_date_restart_splunk#29"
"extId":"xxvt_splunk_get_jenkins_data#38"
"extId":"xxvt_splunk_get_clearquest_dr_data#47"
4) Теперь у вас есть вышеуказанный вывод для данного запуска конвейера, используя файл Parent-Child (прямые отношения) (который мы сгенерировали в пуле 1), мы можем использовать его для создания нашего окончательного файла Build Pipeline Tree, т.е.
xxvt_main#157 called: xxvt_splunk_get_jenkins_data#38
xxvt_main#157 called: xxvt_splunk_get_clearquest_dr_data#47
xxvt_main#157 called: xxvt_splunk_run_collect_operation#29
xxvt_splunk_run_collect_operation#29 called: xxvt_splunk_run_process_operation#29
xxvt_splunk_run_process_operation#29 called: xxvt_splunk_update_date_restart_splunk#29
5) Зная данный прогон, связанный имя-задания и его сборка # , мы можем осторожно использовать api/json?pretty=true&depth=1 or 2 or 3
Дженкинса, чтобы выбрать поля мы хотим получить метрики и, наконец, создать / придумать файл .csv в любом формате, который вам нравится, , который будет иметь метрики для данного запуска конвейера - HORIZONTALLY .