在提交/拉取请求上跟踪多个github repo以构建jenkins作业

时间:2016-07-17 00:16:13

标签: github jenkins jenkins-plugins jenkins-pipeline

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

有没有办法在所有repos上设置一个钩子,以便在对任何repos的pull请求中构建具有pull请求的特定仓库?

这将有所帮助,因为当我可以为所有回购工作找到一份工作时,我不需要每份回购1份工作。

2 个答案:

答案 0 :(得分:3)

如果你set your Jenkins url in the webhooks and services of your various GitHub repos,那个网络钩子会调用Jenkins。

但是Jenkins GitHub plugin只会触发" Github project"拥有正确的git@github.com:Person/Project.git回购。

一种可能的解决方法是:

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

答案 1 :(得分:0)

可以使用Jenkins Pipelines。

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