gpt4 book ai didi

jenkins - 单个种子作业可以处理来自多个存储库的 DSL 吗?

转载 作者:行者123 更新时间:2023-12-04 21:07:42 25 4
gpt4 key购买 nike

我最近设法将几个手动创建的作业转换为 DSL 脚本(内联到临时的“种子”作业中),并且对它的简单程度感到惊喜。现在我想摆脱多个种子工作并尝试更干净地构建事物。

为此,我创建了一个新的 jenkins-ci repo 并将所有 Groovy DSL 脚本提交给它。然后我创建了一个 job-generator来自 jenkins-ci 的 Jenkins 工作repo 并且有一个 Process Job DSLs 步骤。这一步勾选了 Look on Filesystem 框,DSL Scripts 字段设置为 jobs/*.groovy .随着全局推送通知已经到位,这或多或少按预期工作:如果我对 jenkins-ci 进行更改 repo ,job-generator作业自动运行并重新生成所有作业——太棒了!

我不喜欢这个解决方案的地方在于它的引用局部性很差:工作的 DSL 脚本与代码位于一个完全独立的存储库中。我真正想要的是将作业 DSL 脚本保存在每个单独的代码存储库中,在 jenkins 中。子文件夹,并有一个单一的种子作业来处理它们。这样,对 CI 设置的更改可以在代码旁边进行代码审查。对我来说,这感觉就像一个理想的设置。

不幸的是,我对如何实现这一点没有明确的想法。如果我能找到一种方法让种子作业监视多个 repos,这样对其中任何一个的提交都会触发它,也许我可以在 Process Job DSLs 步骤之前注入(inject)另一个构建步骤并(以某种方式)编写我的方式胜利,但是...我什至不确定如何达到这一点。 (我当然不想在生成器作业中对每个 repo 进行完整克隆,只是为了引入 DSL 脚本!)

我怀疑我不是第一个希望他们可以将 Job DSL 脚本与代码放在一起的人,尽管也许我高估了好处。非常感谢有关此主题的任何建议-谢谢!

最佳答案

不幸的是,没有直接的方法可以解决这个问题。已经打开了几个功能请求( JENKINS-33275JENKINS-37220 ),但是 AFAIK 没有人在处理其中任何一个。

作为一种解决方法,您可以使用 Pipeline Multibranch Plugin并为您的每个存储库创建一个多分支项目。然后您必须添加一个简单的 Jenkinsfile到每个 repo/branch 并使用 Jenkinsfile执行您的 Job DSL 脚本。见 Use Job DSL in Pipeline scripts详情。这需要最少的编码,但我认为必须克隆每个 repo 才能工作,因为文件系统上必须有 Job DSL 文件。

您可以使用 Job DSL 创建多分支作业,请参阅 multibranchPipelineJob在 API 查看器中。这将是您的“根”种子工作。

如果您的存储库托管在 GitHub 上,您还可以查看 GitHub Organization Folder Plugin .使用该插件,您只能为每个组织创建一个作业,而不是多个多分支作业。

关于jenkins - 单个种子作业可以处理来自多个存储库的 DSL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41602602/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com