当我尝试通过提交后脚本调用 Jenkins 构建时,svn 返回拒绝访问失败。使用https://wiki.jenkins-ci.org/display/JENKINS/Subversion+Plugin上的说明,我第一次尝试使用 Jenkins 所在的特定配置。
第一个 Jenkins 配置:
[x] 启用安全性 => Jenkins 自己的用户数据库
[x] 防止跨站点请求伪造漏洞利用(启用了默认 Crumb Issuer
)返回
Error: Connecting to SERVER_IP:8080... failed: Permission denied.
在使用各种wget选项(例如 http-user、user、http-password、password 等)多次失败后,我更改了 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-user和--http-password的用户身份运行构建。虽然它不是按照我想要的用户构建的,但至少可以构建,无论是否带有?token选项。
sudo /var/svn/JOB/hooks/post-commit
如果我使用Jenkins 构建运行后提交挂钩。
每次我对 svn 进行提交时,都会运行 post-commit 挂钩并尝试触发 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
任何关于正在发生的事情的见解都会让我成为一个非常快乐的人,并且在一周和几个小时试图让它发挥作用后非常感激。