为多个Git(GitHub)仓库重用一个Jenkins任务

5
我有一个非常简单的Jenkins构建,需要用于多个代码库。所有这些代码库都属于同一组织,有着相同的分支等。除了代码库名称不同外,没有任何区别。
每个单独的代码库应该能够仅对此特定代码库触发构建。我想象一下,类似将参数化构建与包含存储库名称查询参数的WebHook URL结合使用。
对此有什么想法或指针吗?

1
我会采用Pipeline作业方法,使用全局共享库中捆绑的通用代码,如下所建议。事实上,我们已经在这样做了。 - Joerg S
那还需要手动添加新存储库的新工作吗? - Guite
我理解您想让Jenkins自动从新的代码库构建项目? - Joerg S
是的,存储库提交应该触发新的构建。实际上,我需要的是类似于使用源存储库作为轴的矩阵作业。我也可以使用返回存储库名称数组的YAML或JSON文件,并使用管道作业消耗此文件。但这将是一个简单而相当愚蠢的循环,每次都会构建所有存储库。缺失的部分是每个单独的存储库都应该触发相应的构建作业(或具有标识存储库的参数的公共作业)。 - Guite
您可以使用Job DSL编写一个seeder job,循环浏览所有存储库,并使用相同的共享代码创建管道作业。我真的不建议在同一作业中交替构建不同的存储库,因为这将完全混淆构建历史记录并使其几乎无用。我还可以考虑设置一个单一的管道作业,始终并行或按顺序构建所有存储库。但是仍然需要每个存储库添加一行新行。对于Bitbucket,您可以让Jenkins自动创建新作业。不确定GitHub是否也可以这样做。 - Joerg S
4个回答

1
我知道这个问题已经有了答案,但是还有另一种简单的方法可以从多个GitHub URL 触发单个作业。
您可以使用通用Webhook触发器插件从不同的GitHub存储库构建相同的作业。您需要为作业分配唯一令牌,并将多个GitHub存储库的Webhook配置为:

JENKINS_URL/generic-webhook-trigger/invoke?token=TOKEN_NAME


0

我曾经在某个组织中读到过,他们将大多数标准管道放入综合共享库中。这篇文章对此有很好的阐述。

我的公司使用“Seedjobs”来创建多个管道,只需一个作业即可。阅读这篇文章以了解该想法的概述。


0

我们通过创建Jenkins构建模板并根据此模板为每个URL配置每个作业来实现了它

我们可以使用参数配置一个作业,但没有采用这种方法,因为很难知道它失败的是哪个git仓库,因为我们需要查看每个构建的参数

可以使用以下插件创建模板 https://wiki.jenkins.io/display/JENKINS/Template+Project+Plugin


0

经过更多的研究,我认为我将尝试使用“GitHub组织”工作类型。它会扫描给定GitHub组织或所有者的所有存储库,并自动管理相应的工作。


这种方法非常有效,而无需编写额外的种子作业。 - Guite

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