从 SVN post-commit hook 自动创建 Jenkins 作业

Create Jenkins jobs automatically from SVN post-commit hook

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

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

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

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

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

您可以使用 Build Name Setter Plugin 将构建的 name 设置为构建的子树。这将让您看到哪些构建是针对哪些项目的。

在 Jenkins 中设置这应该比尝试在运行中创建 Jenkins 作业容易得多。