我正在尝试设置一个场景,在 github 上创建一个触发 Jenkins 多分支管道的拉取请求,并且该多分支管道使用通用 Webhook 插件从从 github 发送到 jenkins 的 POST 请求中提取值以用于剧本。
不幸的是,正如Generic Webhook Trigger Plugin wiki 中所述:
注意:从管道配置时,该管道需要运行一次,以应用插件触发配置,之后该插件将能够触发作业。这就是 Jenkins 的工作方式,而不是在这个插件中实现的东西。您可以通过使用 Job DSL 并让 Job DSL 使用在该 DSL 中配置的插件创建管道作业来避免这种情况。
使用普通管道就可以了,因为它只是创建 Jenkins 作业的一个过程。然而问题是,每当创建新的分支/PR 时,多分支管道都会创建一个新作业,这意味着对于我在 github 上创建的每个拉取请求(这会触发我的多分支管道脚本),我必须运行它两次使通用 webhook 功能正常工作。对于长期项目而言,必须为每个 PR 重新提交将是乏味的。
在我看来,有两种可能的方法来解决/改进这个问题。一种是尝试使用 DSL Jobs(如 wiki 建议的那样);但是我尝试了这个并且无法让它工作(它增加了设置的大量复杂性,所以我现在已经放弃了它)。
第二种可能的解决方案如下:当在 github 中创建 PR 时,Generic Webhook 会导致在该 PR 对应的 multibranch pipeline 中创建新作业;多分支管道第一次运行这个新创建的作业的第一次构建将失败,原因在上面的引用中给出;但随后的解决方案可能涉及测试第一份工作失败并以某种方式告诉詹金斯再次尝试重建该工作。
所以我的问题与第二种方法有关:在 github 上创建 PR 后,我如何才能最巧妙地为这个多分支管道运行重建?
任何建议/建议将不胜感激!