如何在Jenkins中使通用Webhook触发器插件与多分支管道一起使用?

时间:2019-03-11 18:40:01

标签: jenkins jenkins-job-dsl multibranch-pipeline git-webhooks

我正在尝试建立一个场景,其中在github上创建一个触发请求的触发器,该触发器触发Jenkins多分支管道,并且该多分支管道使用Generic Webhook插件从github发送给jenkins的POST请求中提取值。在脚本中使用。

很遗憾,如Generic Webhook Trigger Plugin Wiki所述:

  

注意:从管道配置时,该管道需要运行一次,以应用插件触发器配置,然后此插件将能够触发作业。 Jenkins就是这样工作的,而不是在此插件中实现的。您可以通过使用Job DSL避免这种情况,并让Job DSL使用该DSL中配置的插件来创建管道作业。

使用常规管道可以做到这一点,因为这与创建Jenkins职位只是一次过。但是,问题在于,每当创建新的分支/ PR时,多分支管道都会创建一个新作业,这意味着对于我在github上创建的 each 拉取请求(这会触发我的多分支管道脚本),然后,我必须运行两次以使通用的Webhook功能正常工作。对于长期项目,必须为每个PR重新提交都会很繁琐。

在我看来,有两种可能的方法可以解决/改善此问题。一种是尝试使用DSL Jobs(由Wiki建议)。但是我尝试了一下却无法使它正常工作(这增加了设置的复杂性,因此我暂时放弃了它。)

第二种可能的解决方案如下:在github中创建PR时,Generic Webhook将导致在与该PR对应的多分支管道中创建新作业;多分支管道第一次运行时,由于上述引用中的原因,此新创建的作业的首次构建将失败;但随后的解决方案可能涉及测试第一个作业是否失败,并以某种方式告诉Jenkins再次尝试对该作业进行重建。

所以我的问题与第二种方法有关:在github上创建PR时,如何最巧妙地对此多分支管道进行重建?

任何建议/建议将不胜感激!

2 个答案:

答案 0 :(得分:0)

实际上,对于多分支管道而言,并非如此。普通的管道需要运行两次。

我更新了以下文档:

  

从管道(不是多分支管道)配置时...

答案 1 :(得分:0)

要通过webhook触发多分支管线,可以使用以下插件:
“多分支扫描Webhook触发器” https://plugins.jenkins.io/multibranch-scan-webhook-trigger/