Триггер Hudson удаленно дает запрещенную ошибку 403

У меня есть оболочка script на той же машине, на которой hudson развернута и после ее выполнения, она вызывает wget на URL-адрес запуска hudson build. Поскольку его та же машина, я обращаюсь к ней как http://localhost:8080/hudson/job/jobname/build?token=sometoken

Как правило, это должно инициировать сборку проекта. Но я получаю запрет, когда я это делаю. Кто-нибудь может понять, почему? Я пробовал это с помощью браузера, и он запускает сборку, но через командную строку он не работает. Есть идеи?

Ответ 1

Я понял это. Очевидно, если Хадсон защищен с использованием механизма безопасности, вам необходимо аутентифицировать запросы на сборку. См. Эту ссылку на wiki для более подробной информации http://wiki.hudson-ci.org/display/HUDSON/Authenticating+scripted+clients

Поскольку я использовал механизм auth, который был отправлен с помощью Hudson, вызывая завершенные скрипты сборки. Я использовал

wget --auth-no-challenge --http-user=user --http-password=password http://hudson.yourcompany.com/job/your_job/build?token=TOKEN

для запуска сборки script.

Ответ 2

Если вы используете защиту на основе матрицы, вы можете установить разрешение Job Read и Job Build на анонимное, так что вам не нужен пользователь и пароль в вашем post-commit hook.

Еще один совет - включить опрос без установки даты и использовать этот URL-адрес:

http://hudson.yourcompany.com/job/your_job/ опрос? токен = TOKEN

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

Ответ 3

У меня были те же ошибки. В моем случае мне пришлось добавить заголовок Jenkins-Crumb к объекту HttpPost, чтобы он работал.

post.addHeader("Jenkins-Crumb","crumb value");

Чтобы найти значение крошки для вашего экземпляра Jenkins, установите Firebug или любой плагин вашего браузера, который поможет вам увидеть заголовки запросов. Перейдите на страницу своей работы в http://server_name:port/jenkins/job/job_name Нажмите F12, чтобы активировать Firebug, перейдите на вкладку Net. Нажмите "Включить автообновление" в правом верхнем углу страницы. Теперь каждые 5 секунд вы должны увидеть запрос Ajax, сделанный для извлечения buildHistory. В этом запросе проверьте заголовки. Для Jenkins-Crumb должен быть заголовок, он также может быть под именем .crumb в зависимости от версии Jenkins, которую вы используете. Вы это в своем Java-коде.