如何通过Subversion post-commit钩子启动Jenkins构建? (localhost,在Windows中)

时间:2014-04-28 20:03:29

标签: svn jenkins post-commit-hook

我在Windows 7 localhost上安装了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,不能GET     在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变量或根本不需要更改请求标头但我仍然得到了#34;必须是POST,不能GET"错误。

是什么给出了?

1 个答案:

答案 0 :(得分:0)

我配置了jenkins: 管理Jenkins>配置全局安全>检查"防止跨站请求伪造攻击" (您可以离开"启用安全性"取消选中)>默认Crumb Issuer

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

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

Post-Commit Hook to trigger automatic Jenkins Build