11

我在部署 hudson 的同一台机器上有一个 shell 脚本,在执行它时,它会在 hudson 构建触发器 URL 上调用 wget。由于它是同一台机器,我以http://localhost:8080/hudson/job/jobname/build?token=sometoken 访问它

通常,这应该会触发项目的构建。但是当我这样做时,我得到了 403 禁止。有人知道为什么吗?我已经使用浏览器进行了尝试,它触发了构建,但是通过命令行它似乎不起作用。有任何想法吗?

4

3 回答 3

10

我想到了。显然,如果使用安全机制保护 Hudson,您需要对构建请求进行身份验证。有关更多详细信息,请参阅此 wiki 链接http://wiki.hudson-ci.org/display/HUDSON/Authenticating+scripted+clients

由于我使用了 Hudson 附带的身份验证机制,因此调用了构建脚本。我用了

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

运行构建脚本。

于 2010-04-07T07:12:39.213 回答
0

如果您使用基于矩阵的安全性,您可以将 Job Read 和 Job Build 权限设置为 Anonymous,因此您在 post-commit 挂钩中不需要用户和密码。

另一个提示是在不设置日期的情况下打开轮询并使用此 URL:

http://hudson.yourcompany.com/job/your_job/ polling ?token=TOKEN

只要有 svn 更改,您的工作就会被构建(在更改其他项目、创建标签等时无需构建)

于 2010-06-23T22:23:51.747 回答
-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 应该有一个标题,它也可以在名称 .crumb 下,具体取决于您使用的 Jenkins 版本。你在你的Java代码中。

于 2016-05-24T07:52:12.767 回答