使用Subversion的Hudson:使用Java或Ant在Windows上提交后构建

时间:2011-08-26 08:35:09

标签: java java-ee ant hudson hudson-plugins

我的任务是让Hudson在提交后开始新的构建。正如我读过here一样,它是通过使用svn post-commit钩子完成的。问题是我不想使用VBScript,因此它是依赖于平台的。我可以看到这个VBScript中唯一重要的东西是使用 svnlook 命令和 http:// server / subversion / $ {UUID} / notifyCommit?rev = $ REV url 。就我而言,我可以做同样的事情,例如,使用java程序(需要参数作为修订版,存储库位置等)。

请您解开 http:// server / subversion / $ {UUID} / notifyCommit?rev = $ REV 网址的神秘面纱?我需要所有可能的变种。如果sombody可以描述与Hudson交互的整个过程(它是在获得此请求后执行的内部进程链),那将是很棒的。

编辑我真的需要提交后行为,而不是轮询机制。

4 个答案:

答案 0 :(得分:4)

最快的跨平台解决方案是在SVN服务器上安装Cygwin(假设SVN框运行的是Windows)并使用提供的shell脚本:

REPOS="$1"
REV="$2"
UUID=`svnlook uuid $REPOS`
/usr/bin/wget \
  --header "Content-Type:text/plain;charset=UTF-8" \
  --post-data "`svnlook changed --revision $REV $REPOS`" \
  --output-document "-" \
  --timeout=2 \
  http://server/subversion/${UUID}/notifyCommit?rev=$REV
  

我需要http://server/subversion/${UUID}/notifyCommit?rev=$REV

的所有可能变体

为什么呢?那就是你所需要的一切。

  • 服务器Jenkins服务器
  • $ {UUID}存储库的unqiue ID。
  • $ REV新版本。

你也可以在post-commit hook中使用一些东西来ping:http://YOURHOST/jenkins/job/PROJECTNAME/build。你不会为每次提交获得新的构建,但是如果你在几秒钟内有两次提交你真的想要每个提交吗?


出于好奇,您是否想要提交帖子,因为您发现您的SVN服务器变得非常慢?如果是这样,SVN框上的操作系统是什么?您可能会遇到操作系统的限制,如果您转移到Linux或Windows的服务器版本,您将获得更好的性能(在同一锡)。

答案 1 :(得分:3)

您不一定需要使用svn钩子。只是让Hudson经常调查回购的变化。此外,您可能希望使用一个安静的时间段来连续考虑多个提交(否则可能触发多个构建)。

从您发布的链接:

  

Jenkins可以轮询Subversion存储库以进行更改,虽然这个效率相当高,但每次只能发生一次,所以在Jenkins检测到更改之前,您可能还需要等待一整分钟。

我不会考虑等一下这个大问题。在大多数情况下,您甚至可能都没有注意到它。

答案 2 :(得分:1)

我这样做了:我配置hudson来检查每一分钟的变化(模式:* * * * *)。它的效果非常好。唯一可能出现的问题是,如果两个项目在这个时间间隔内被提交并且彼此依赖,那么哈德森首先构建错误的项目。

答案 3 :(得分:1)

重要 - 网上的文章都没有明确提及您必须通过“远程触发器构建”选中创建的作业。这是第一步,此步骤本身为您提供了必须放入subversion HOOK脚本Here is what you have to select while creating your job that would be called when commit occurs

的URL

相应的钩子脚本

!/ bin / sh的

REPOS="$1"
REV="$2"
/usr/bin/wget \
--header "Content-Type:text/plain;charset=UTF-8" \
--post-data "`/usr/local/bin/svnlook changed --revision $REV $REPOS`" \
--output-document "-" \
--timeout=2 \
http://build.development.com:8080/job/HdsVp/build?token=SVN_CHANGE