首先,我已将svn配置为可通过apache DAV访问。
然后我有一个post-commit钩子告诉jenkins持续集成服务器,通过一个简单的wget命令更改了存储库(并使其构建):
/opt/local/bin/wget (many-options) https://jenkins.domain.tld/subversion/${UUID}/notifyCommit?rev=$REV >> $LOGFILE
脚本检查wget返回代码,然后回显错误消息并退出1(因此svn客户端知道提交失败)。
失败后LOGFILE包含:
--2012-04-04 10:56:54-- https://jenkins.domain.tld/subversion/4d729FFF-FFFF-4fb8-b8b5-be083cf6fe96/notifyCommit?rev=302
Résolution de jenkins.domain.tld (jenkins.domain.tld)... échec: Temporary failure in name resolution.
wget : impossible de résoudre l'adresse de l'hôte «jenkins.domain.tld»
主机jenkins.domain.tld
已添加到/etc/hosts
,以确保解决方案不会失败,但我仍然遇到此问题。
当然,我已经从CLI检查了post-commit命令,但它确实有效。
我已将此行添加到提交后脚本中:
/usr/bin/host jenkins.domain.tld >> $LOGFILE
分辨率工作得很好......也许是一个wget问题。
刚刚用等效的curl替换了wget调用,同样的问题:
curl: (6) Couldn't resolve host 'jenkins.domain.tld'
答案 0 :(得分:1)
好的,没有找到问题的根源,而是一个解决方案(非常难看):
更新:我通过完全停止apache,等待片刻然后再次启动来解决它。但这并不能解释这种行为的根本原因(因此没有令人满意的解决方案)。所以我把它打开了。
答案 1 :(得分:0)
升级到Ubuntu 14.04 LTS之后我遇到了同样的问题(不确定升级是否真的有关)。但是,我可以通过在post-commit hook中向wget添加显式超时配置来解决它:
wget \
--timeout=10 \
--dns-timeout=10 \
...