Построение Hudson с помощью API - PullRequest
1 голос
/ 11 ноября 2010

Мне было интересно, есть ли способ сделать это в Гудзоне (или с любым из различных плагинов). Мой ИДЕАЛЬНЫЙ сценарий:

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

Теперь, так как я не могу заставить это работать, вот мое текущее решение, которое мне еще предстоит реализовать:

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

Кто-нибудь знает, как я могу реализовать свое "идеальное" решение?

Ответы [ 2 ]

5 голосов
/ 11 ноября 2010

Да, для этого вы можете использовать Hudson Remote API (как упоминалось @Dan). В частности, вам нужно настроить свою работу на прием удаленных триггеров ( Конфигурация задания -> Триггеры сборки -> Триггерная сборка удаленно ), а затем вы можете отключить построить с помощью простого HTTP GET на правильный URL.

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

Я могу начать работу в Hudson с помощью wget:

wget --auth-no-challenge --http-user=test --http-password=test "http://localhost:8080/job/My job/build?TOKEN=test"

Возвращает набор HTML с номером сборки #20, который вы можете проанализировать. Номер сборки может затем использоваться для запроса, выполнена ли работа / успешно.

Вы можете просмотреть API-интерфейс Hudson Remote прямо из браузера для большинства веб-страниц Hudson, к которым вы обычно обращаетесь, добавив /api (или /api/xml, чтобы просмотреть фактический вывод XML), например, http://your-hudson/job/My job/api/.


Обновление : Я вижу из вашего вопроса, что вы, вероятно, знаете многое из того, что я написал. Стоит немного изучить встроенную документацию по Hudson API. Я только что обнаружил этот кусок, который может помочь.

Вы можете получить номер сборки последней сборки (в виде обычного текста) с URL: http://your-hudson/job/My job/lastBuild/buildNumber

Когда у вас есть номер сборки, я думаю, что опрос и статус задания будут простыми, как только вы поймете API.

2 голосов
/ 30 мая 2011

А что, если вам не нужен последний номер сборки, но вы хотите номер сборки, которая была вызвана нажатием URL-адреса сборки?

Насколько я могу судить, нажатие на этот URL возвращает 302, который перенаправляет вас на главную страницу задания, без указания какого-либо номера сборки того, который вы сработали.

...