在 commit/pull 请求上跟踪多个 github 回购以构建 jenkins 作业

track multiple github repo on commit/pull request to build a jenkins job

我有一个标准的 Jenkins 作业,需要触发对我添加到配置中的多个 SCM 插件的任何 x 存储库的任何拉动 request/commit。

是否有任何方法可以挂钩所有存储库,以便在对任何存储库的拉取请求中,作业构建发出拉取请求的特定存储库?

这会很有帮助,因为当我可以为所有回购提供一份工作时,我不需要每个回购 1 个工作。

如果您 ,Jenkins 将被该 webhook 调用。

但是 Jenkins GitHub plugin 只会触发“Github project”具有正确 git@github.com:Person/Project.git 存储库的作业。

一种可能的解决方法是:

  • 在 GitHub 一个父仓库上发布,将所有其他仓库声明为 submodules;
  • 在其他回购上设置另一个 webhook 以触发父回购中的 git submodule update --remote(以刷新所有子模块 gitlinks SHA1, special entries in the index)并将该父回购推回到 GitHub;
  • 有一个 Jenkins 作业监控(通过 GitHub 插件及其 webhook)唯一的 GitHub 父仓库;
  • 有一个构建步骤,compares GIT_COMMIT and GIT_PREVIOUS_COMMIT 以确定哪个子文件夹 -- 子模块 -- 刚刚更改,并仅在那个或那些子文件夹上启动构建。

使用 Jenkins 管道是可能的。

您可以通过结帐 built-in 步骤指定任意数量的 SCM 位置。在这种情况下,Jenkins 会 "know" 它必须在任何源存储库中修改后重建管道。 Git 当然应该启用挂钩来实现它。