Триггер 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-коде.