在提交/拉取请求上跟踪多个 GitHub 存储库以构建 Jenkins 作业



我有一个标准的 Jenkins 作业,需要为对我添加到配置中的多个 SCM 插件中的任何 x 存储库发出的任何拉取请求/提交触发该作业。

有没有办法在所有存储库上挂一个钩子,以便在对任何存储库的拉取请求上,作业会构建发出拉取请求的特定存储库?

这将很有帮助,因为当我可以为所有存储库提供一个作业时,我不需要每个存储库 1 个作业。

如果你在

各种 GitHub 存储库的 webhook 和服务中设置了 Jenkins url,Jenkins 将被该 webhook 调用。

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

一种可能的解决方法是:

  • 在 GitHub 上发布一个父存储库,该存储库将所有其他存储库声明为子模块;
  • 在其他存储库上设置另一个 Webhook,以便在父存储库中触发git submodule update --remote(以刷新所有子模块 gitlinks SHA1,索引中的特殊条目)并将该父存储库推送回 GitHub;
  • 有一个 Jenkins 作业,该作业监视(通过 GitHub 插件及其 webhook)唯一的 GitHub 父存储库;
  • 有一个比较GIT_COMMITGIT_PREVIOUS_COMMIT的构建步骤,以确定哪个子文件夹(子模块)刚刚更改,并仅在该子文件夹或这些子文件夹上启动构建。

使用 Jenkins Pipelines 是可能的。

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

相关内容

  • 没有找到相关文章

最新更新