问题
我有一个哈德森构建服务器建立一个Windows Server 2008上我们希望能够提交到资源库后提交成功,我们希望视觉SVN服务器发送消息或触发哈德森构建服务器,让它知道它需要执行构建。 我们希望它来建立只有当有人做了这样的提交,我们不希望轮询SVN不断,因为它没有必要。
题
是否有视觉SVN插件,可以自动发送消息到哈德森,有没有这样做,而不使用wget的更好的办法? 我已经使用wget尝试在后哈德森构建URL提交视觉SVN服务器挂钩,但我意识到后提交挂钩只能为整个库进行设置,而不是在视觉SVN服务器单个项目,因此,如果我们做了一个小的变化到不同的项目库的打算告诉哈德森它需要建立即使发生在与hudosn链接的项目没有变化?
如何让哈德森的数字,一个出。 哈德森可以查询库(只有你的项目的URL),以找出是否有变化,如果检测到更改只能建。
我同意@Peter_Schuetze,让哈德森摸不着头脑。 这不值得优化,除非你真正发现了问题。
您可以使用post-commit钩子来推动哈德森和“再哈德森将核对已经配置轮询的所有作业[变化],并安排相应的基础之上。”
后提交挂钩只能为整个库进行设置,而不是单个项目
真正。 如果你真的担心,虽然,在post-commit钩子,你可以查验哈德森,像前检查更改的目录:
changes=`svnlook dirs-changed -r $REV $REPO`
case $changes in
my_project/*)
# ping Hudson
;;
esac
对我来说,这听起来像太多的工作,以保持post-commit钩子是最新的。
如果要触发建立仅适用于特定项目中,最有效的方法是将逻辑写入到你的svn post-commit钩子。 这避免了轮询的不必要的流量,它触发工作,只有当期望的项目被改变。 下面的例子是在我们的VisualSVN服务器实例使用。
set repos=%1
set rev=%2
FOR /F "tokens=*" %%k IN ('svnlook dirs-changed "%repos%" -r %rev% 2^>NUL') do (
set Changed_Project=%%k
)
set Changed_Project=%Changed_Project:~9,9%
if "%Changed_Project%" == "Project_A" goto Actions_For_Project_A
:Actions_For_Project_A
curl -X POST "http://JenkinsVM:8080/job/Job_Name/build?&token=TOKEN_NAME
以上线路承担项目正在/分支机构/ Project_A。 对于不同的位置,您将需要调整的字符串开始和长度值。 它还假定卷曲是在您所设定的路径,并且已经在你的詹金斯作业创建的认证令牌 。