0

我在我的 Windows 7 本地主机上安装了 Jenkins 和 Subversion。他们独立工作很好。

我安装了 Jenkins 的 Subversion 插件。从这个页面https://wiki.jenkins-ci.org/display/JENKINS/Subversion+Plugin#SubversionPlugin-Windowsspecificpostcommithook我有 post-commit.bat 和描述的 vbs 脚本。

此视觉基本代码失败:

url = jenkins + "crumbIssuer/api/xml?          
xpath=concat(//crumbRequestField,"":"",//crumb)"
Set http = CreateObject("Microsoft.XMLHTTP")
http.open "GET", url, False

出现此错误:

javax.servlet.ServletException: 必须是 POST,不能在 hudson.model.AbstractModelObject.requirePOST(AbstractModelObject.java:88) 获取

我认为这段代码正在获取 CSRF 保护令牌,但失败了。

https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API说:

Jenkins uses the "Prevent Cross Site Request Forgery exploits" 
security option (which it should), when you make a POST request, 
you have to send a CSRF protection token as an HTTP request header.

为了简单起见,我没有打开 CSRF 保护,尽管我知道我应该这样做。

*我删除了 .vbs 脚本文件的 GET 部分,所以现在它只调用 POST 部分,并且根本不引用 crumb 变量或更改请求标头,但我仍然得到“必须是 POST,可以'不是 GET" 错误。

是什么赋予了?

4

1 回答 1

0

我配置了 jenkins:管理 Jenkins > 配置全局安全 > 选中“防止跨站点请求伪造漏洞”(您可以不选中“启用安全性”)> 默认 Crumb Issuer

这有点帮助(GET 成功但 POST 仍然以同样的方式失败)。

如何让 POST 工作?我的问题被这位朋友的回答回答了。您必须配置您的项目以进行 SCM 轮询,但不用担心,您可以将其设置为每年轮询一次。

Post-Commit Hook 触发自动 Jenkins 构建

于 2014-04-28T20:36:52.647 回答