跟踪多个GitHub仓库的提交/拉取请求以构建Jenkins作业

4
我有一个标准的Jenkins任务,需要对我在配置中添加到多个SCM插件的x存储库中所做的任何拉取请求/提交进行触发。
是否有办法在所有存储库上设置钩子,以便在任何存储库的拉取请求上,该任务构建特定的存储库?
这将非常有帮助,因为我不需要为每个存储库使用1个任务,而是可以为所有存储库使用一个任务。
2个回答

3
如果您在各个GitHub存储库的Webhooks和服务中设置Jenkins URL,则会通过该Webhook调用Jenkins。
但是Jenkins GitHub插件仅会触发具有正确git@github.com:Person/Project.git 存储库的“GitHub项目”的作业。
一个可能的解决方法是:
  • 在GitHub上发布一个父仓库,将所有其他仓库声明为子模块;
  • 在这些其他仓库上设置另一个Webhook,以便触发git submodule update --remote命令,以刷新父仓库中的所有子模块gitlinks SHA1index中的特殊条目,并将该父仓库推送回GitHub;
  • 有一个Jenkins作业通过GitHub插件和其Webhook监视唯一的GitHub父仓库;
  • 有一个构建步骤比较GIT_COMMITGIT_PREVIOUS_COMMIT,以确定哪个子文件夹 - 子模块 - 刚刚更改,并仅在那些子文件夹上启动构建。

-1

通过使用Jenkins Pipelines是可能的。

您可以通过checkout内置步骤指定任意数量的SCM位置。在这种情况下,Jenkins将“知道”它必须在任何源存储库中进行修改时重新构建管道。当然,需要启用Git钩子才能实现这一点。


除了MultiBranch Pipeline插件,您是指其他东西吗?因为它只会在Webhooks触发包含Jenkinsfile的存储库上运行。 - Jason Antman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接