svn提交后调用jenkins构建http失败



当我试图通过提交后脚本调用Jenkins构建时,svn返回拒绝访问失败。使用上的指示https://wiki.jenkins-ci.org/display/JENKINS/Subversion+插件我的第一次尝试,然后是詹金斯的具体配置。

第一个Jenkins配置:
[x] 启用安全=>Jenkins自己的用户数据库
[x] 防止跨站点请求伪造漏洞利用(启用w/&w/out默认Crumb Issuer
此返回

Error: Connecting to SERVER_IP:8080... failed: Permission denied.

在使用各种wget选项(如http用户、用户、http密码、密码等)多次失败后,我更改了Jenkins服务器配置,停止使用CSRF。这也失败了。我传递了用户API令牌、作业API令牌和普通用户名/密码。当这些失败时,我试图用wget从命令行调用作业,令人惊讶的是,它成功了。

当前Jenkins配置:
所有安全选项都已禁用。我没有使用用户,也没有使用代币或任何东西。

SVN提交后文件中只有一个命令。

wget http://SERVER_IP:8080/job/JOB_trunk/build?token=BUILD --tries=2 --timeout=2

这可以在命令行中工作。詹金斯创造了这份工作。Jenkins不会作为我提供的wget的用户运行构建,该用户具有--http用户--http密码。虽然它不是按照我想要的用户构建的,但至少在有和没有?token选项。

如果我使用sudo /var/svn/JOB/hooks/post-commit运行提交后挂钩,Jenkins构建就会运行。

每次我向svn提交时,都会运行提交后挂钩,并尝试触发Jenkins构建,我会返回以下错误。

Error: post-commit hook failed (exit code 1) with output:  
Error: --2013-08-21 21:36:37--  http://SERVER_IP:8080/job/JOB_trunk/build?token=BUILD  
Error: Connecting to SERVER_IP:8080... failed: Permission denied.  

虽然我可以手动构建东西,轮询svn更改,等等……我只对从提交后挂钩触发构建感兴趣。

SVN服务器正在CentOS6上运行。
詹金斯正在运行Win7。

出于测试目的,我试图通过使用脚本中的su命令来触发构建,但仍然存在问题。如果我从命令行运行脚本,它会成功构建作业,当svn-commit触发钩子时,它不会触发构建。

/bin/su -c `wget http://SERVER_IP:8080/job/JOB_trunk/build --tries=2 --timeout=2

任何对正在发生的事情的了解都会让我成为一个非常快乐的人,在经历了一周和几个小时的努力后,我会非常感激。

(我认为提交后文件中的"wget-wget"是一个拼写错误。)

对我来说,您的CentOS6服务器存在一些网络内核问题。

现在我想知道哪个命令打印"失败:权限被拒绝"。我从来没有见过wget这样失败,它看起来更像是本地系统故障(比如open()系统调用失败)。

要确认这样的问题,请尝试以非root用户的身份将wget发送到其他地址,如google.com。它有效吗?

也可以使用strace了解更多信息。

strace wget etc

并记下故障线路。

如果是,您是否编译了自己的内核?您是否已将CONFIG_ADROIID_PARANOID_NETWORK设置为true?

注意:对于受CSRF保护的站点,您需要添加额外的参数来下载crumb(这在Subversion插件页面中定义。

最新更新