我在部署hudson的同一台机器上有一个shell脚本,在执行它时,它在一个hudson构建触发器URL上调用wget。由于它是同一台机器,我将其作为http://localhost:8080/hudson/job/jobname/build?token=sometoken
访问通常,这应该触发项目的构建。但是当我这样做的时候我被禁止了403。任何人都知道为什么?我已经尝试使用浏览器并触发构建,但是通过命令行它似乎不起作用。有任何想法吗?
答案 0 :(得分:9)
我明白了。显然,如果使用安全机制保护Hudson,则需要对构建请求进行身份验证。有关详细信息,请参阅此wiki链接http://wiki.hudson-ci.org/display/HUDSON/Authenticating+scripted+clients
由于我使用了Hudson附带的auth机制,因此调用构建脚本进行了调用。我用了
wget --auth-no-challenge --http-user=user --http-password=password http://hudson.yourcompany.com/job/your_job/build?token=TOKEN
运行构建脚本。
答案 1 :(得分:0)
如果您使用基于矩阵的安全性,则可以将“作业读取”和“作业构建”权限设置为“匿名”,这样您在提交后挂钩中就不需要用户和密码。
另一个提示是在不设置日期的情况下启用轮询并使用此URL:
http://hudson.yourcompany.com/job/your_job/的轮询强>?标记= TOKEN
如果有svn更改(在更改其他项目时无需构建,创建标记等),您的工作将被构建。
答案 2 :(得分:-1)
我得到了同样的错误。在我的情况下,我不得不将Jenkins-Crumb标头添加到HttpPost对象中以使其工作。
post.addHeader("Jenkins-Crumb","crumb value");
要查找Jenkins实例的crumb值,请在浏览器中安装Firebug或任何插件,以帮助您查看请求标头。转到http://server_name:port/jenkins/job/job_name的工作页面 按F12激活Firebug,进入Net选项卡。点击页面右上角的启用自动刷新链接。现在每隔5秒就会看到一个Ajax请求,用于获取buildHistory。在该请求中,检查标头。 Jenkins-Crumb应该有一个标题,它也可以根据您正在使用的Jenkins版本名称.crumb。你在它的Java代码中。