0

我需要的是一个 SVN 提交后挂钩,它必须能够创建(不仅仅是触发运行)它自己的 Jenkins 作业(如果修订 ID 为 0),并且它必须在多个项目上执行。基本上,每个项目都必须能够使用这个钩子在第一次提交时在 Jenkins 中添加自己的工作。我需要知道的是如何为 Jenkins 提供每个项目的存储库 URL,始终使用相同的钩子。

4

1 回答 1

3

当你运行一个 post-commit 钩子时,提交者必须等到提交完成——这意味着要等到 post-commit 操作本身完成。如果这个时间太长太长的可能是几秒钟,用户会反感。想象一下,每次您进行提交时,提交都需要额外的 15 秒。你坐在那里十五秒钟不知道发生了什么。用户要等多久才能开始尝试终止提交?

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

不要让数十个 Jenkins 作业在您的存储库中构建项目的子树,而是有一个 Jenkins 作业来构建已修改的项目子树。

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

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

这应该比尝试在运行中创建 Jenkins 工作更容易在 Jenkins 中设置。

于 2015-07-20T16:24:37.660 回答