从SVN post-commit hook

时间:2015-07-20 15:33:33

标签: svn jenkins post-commit-hook

我需要的是一个SVN post-commit钩子,它必须能够创建(不仅仅是触发运行)它自己的Jenkins Job(如果版本ID为0),并且它必须在多个项目上执行。基本上,每个项目必须能够使用此钩子在Jenkins第一次提交时添加自己的工作。我需要知道的是如何使用相同的钩子向Jenkins提供每个项目的存储库URL。

1 个答案:

答案 0 :(得分:3)

当您运行提交后挂钩时,提交者必须等到提交完成 - 这意味着要等到提交后操作本身完成。如果太长太长可能会持续几秒钟,那么用户就会反抗。想象一下,每次执行提交时,提交需要15秒。十五秒钟你坐在那里不知道发生了什么。用户等待多长时间才开始尝试终止提交?

您可以通过Jenkins REST API复制Jenkins作业并更新作业的config.xml。这不是微不足道的,但它是可能的。但是,这不是您要使用的机制。

没有几十个Jenkins作业在您的存储库中构建项目的子树,而是使用一个Jenkins作业来构建已修改的项目子树。

想象一下,项目foo的Subversion网址为http://svn.vegicorp.com/projects/foo,项目bar的Subversion网址为http://svn.vegicorp.com/projects/foo。您可以设置Jenkins作业以监视http://svn.vegicorp.com/projects,然后查看是否已修改foo和/或bar,然后触发该特定子树的构建。当有人创建项目http://svn.vegicorp.com/projects/fubar时,Jenkins也会监视该项目,因为它已经在查看http://svn.vegicorp.com/projects

您可以使用Build Name Setter Plugin将构建的名称设置为构建的子树。这将让您了解哪些项目适用于哪些项目。

这在Jenkins中设置要比在Jenkins工作中创建更容易。