#hudson
#хадсон
Вопрос:
Я пытаюсь автоматизировать Hudson, удаленно нажимая на соответствующие URL-адреса. Я использую urllib2 на python для выполнения того же самого.
Прежде всего, я пытаюсь создать существующее задание и получить статус сборки.
Пример URL-адреса для сборки будет выглядеть следующим образом:
http://tomcaturl:8080/hudson/job/.NET Build/build
Однако это возвращает мне HTML-данные.
В документах Hudson говорится, что я могу получать данные в формате python / json / xml, поэтому я пытаюсь нажать
http://tomcaturl:8080/hudson/job/.NET Build/build/api/json
Но я вообще не получаю никаких данных, хотя сборка выполняется успешно.
Есть ли способ узнать, какая сборка была запущена моим запросом на удаленную сборку, чтобы я мог поддерживать взаимно однозначное сопоставление.
Пожалуйста, обратите внимание, что я делаю это через удаленную программу Python, и у меня нет доступа к графическому интерфейсу hudson.
Ответ №1:
Прежде всего, если у вас включена защита / вход, вы должны войти на удаленный сервер hudson для /job/JobName/build . Если вы разрешаете запускать сборку без входа в систему, это не проблема.
Запрос /job/JobName/build вернет HTML-данные. Если вы не вошли в систему, вы получите повторное перенаправление на страницу входа, и сборка не будет запущена. Если запрос выполнен успешно, вы не получите перенаправление на логин, и вы можете предположить, что сборка была поставлена в очередь. Вы также можете проверить очередь сборки, используя URL-адрес api проекта (см. Ниже). Обратите внимание, что перед началом сборки может быть задержка, которую вы можете контролировать, вызывая /job/JobName/build ?задержка = 0 секунд
API недоступен по URL-адресу job / JobName / build, но вы можете просмотреть информацию об api здесь:
http://tomcaturl:8080/hudson/job/.NET Build/api
Большинство страниц в hudson, на которых отображается информация (о проекте, конкретной сборке и так далее), имеют страницу api, если вы добавляете /api/xml или /api/json в конец URL. Причина /job/JobName/build не имеет страницы api просто потому, что это не URL-адрес информационной страницы.
Примеры запросов api:
запрос xml для получения информации о проекте:
http://tomcaturl:8080/hudson/job/.NET Build/api/xml
вызов json для получения информации о последней успешной сборке проекта:
http://tomcaturl:8080/hudson/job/.NET Build/lastSucessfulBuild/api/json
Комментарии:
1. И следующее просто предоставит вам информацию о последней сборке, даже если она не была успешной http://tomcaturl:8080/hudson/job/.NET Build/lastBuild/api/xml или http://tomcaturl:8080/hudson/job/.NET Build/lastBuild/api /…
2. Спасибо Андерсу и sdmythos_gr.
3. Любая идея о том, как я выполняю сопоставление, могу ли я заставить вызов build возвращать мне BUILD_ID / BUILD_TAG / BUILD_NUM, или сборки всегда запланированы.
4. Я не думаю, что вы получаете какую-либо информацию из запроса на сборку. Я думаю, вы узнаете, было ли оно успешным или нет, и вы можете просмотреть список сборок для задания и увидеть последнюю сборку, запущенную данным пользователем, вероятно, это начатая сборка. Я могу ошибаться, и в ответе есть что-то невидимое, что вы можете использовать, кроме просто «OK».
5. @sdmythos_gr возвращает номер последней сборки и некоторые данные, например, выполняется ли он, был ли он успешным или неудачным. Вы можете получить возврат определенного задания с помощью URL: tomcaturl:8080/hudson/job/.NET Build/ <число>/api/json , и вы можете получить вывод консоли с помощью get в URL: tomcaturl:8080/hudson/job/.NET Build/>/ …