Можно ли получить доступ к статусу сборки Jenkins в оболочке выполнения?

Есть ли способ запустить скрипт из шага выполнения оболочки, чтобы получить доступ к статусу сборки, а также к другой информации о сборке? (например, номер сборки, время начала/окончания и т. д.)

Мне нужно обновить вики-страницу скриптом с информацией о сборке.

Заранее спасибо!


person David C    schedule 13.04.2015    source источник
comment
@ user1432893 ответил .. но это не поможет, если вы хотите получить статус сборки (пройдено или не выполнено). потому что оболочка exceute является частью вашей сборки. После этапа сборки обновляется только статус сборки..   -  person DevD    schedule 14.04.2015


Ответы (3)


Информация о состоянии сборки сохраняется в простые XML-файлы. Взгляните на {jenkins-directory}/jobs/{job-name}/builds/{build-number}/build.xml. Вы можете использовать символические ссылки, такие как lastSuccessfulBuild, вместо указания номера сборки, если хотите.

Там вы найдете всю информацию о сборке: статус сборки, время начала, продолжительность и т. д. Разберите файл XML или просто используйте grep в bash-скрипте.

Если вы не хотите использовать файловую систему, вы можете использовать Jenkins API.

Но в любом случае, как только вы получили скрипт, который может определять параметры сборки и обновлять вашу вики-страницу, вы можете поместить его в другое задание Jenkins и запустить его автоматически (например, с помощью тега плагин BuildResultTrigger).

person Eugene C    schedule 14.04.2015
comment
я знаю, что jenkins хранит конфигурацию и данные в файлах XML. Есть ли способ настроить его для хранения в базе данных (mysql, postgres...) - person Youssef Boudaya; 04.05.2021

Я использую собственный API jenkins, чтобы получить статус сборки во время выполнения задания, что работает как шарм. Имейте в виду, что я использую JQ для анализа ответа json.

Чтобы заставить это работать, просто добавьте сценарий оболочки и выполните следующую команду: BUILD_STATUS=$(curl --silent ${BUILD_URL}api/json | jq -r '.result')

Выполнить шаг оболочки

Что приводит к следующему:

Консоль заданий

person MrSpock    schedule 28.04.2017
comment
я получаю ошибку синтаксического анализа: недопустимый числовой литерал в строке 1, столбце 18, когда я запускаю BUILD_STATUS=$(curl --silent ${BUILD_URL}api/json | jq -r '.result') - person Youssef Boudaya; 04.05.2021
comment
Не могу проверить это в данный момент, потому что у меня нет доступных дженкинсов, но что возвращает curl --silent ${BUILD_URL}api/json? Проверьте вывод и посмотрите, есть ли там что-нибудь для вас. - person MrSpock; 05.05.2021
comment
решение состоит в том, чтобы использовать ${BUILD_URL} готовой сборки, а не текущей. short_description = $(curl -g -u псевдо:токен--silent 172.16.4.26:8080/job/docker-hello-world-spring-boot/77/api/ | jq -r '.actions[0].causes[0] .shortDescription') это дает мне неизвестную команду shor_description, почему? - person Youssef Boudaya; 07.05.2021
comment
Разместите свой json здесь: jqplay.org и поделитесь им, чтобы получить помощь. - person MrSpock; 17.05.2021

При выполнении сборки Jenkins устанавливает переменные среды вы можете использовать в своем скрипте.

также обратитесь к деталям о том, как его использовать -

%VAR% в пакетных файлах и $VAR на странице конфигурации задания Jenkins

person Totem    schedule 13.04.2015
comment
Нет переменной среды, раскрывающей статус сборки, которая была первой информацией, заданной в вопросе... - person Jonathan; 20.01.2017
comment
Верно. Нет BUILD_STATUS или RESULT или чего-то еще в env. - person MrSpock; 28.04.2017