GenericWebhookTrigger没有触发特定的构建

时间:2019-10-03 22:01:31

标签: jenkins jenkins-plugins gitbucket

我的詹金斯(Jenkins)正常运行,并且管道规格如下。我将管道配置设置为使用通用Webhook触发器,其配置与管道中指定的配置相同。在我的gitbucket存储库中还将webhook配置为仅发送 push 触发器。但是,当我对其进行测试时,响应为200,并且身体响应为“触发”:false。

管道:

pipeline {
    agent any
    triggers {
    GenericTrigger(
     genericVariables: [
        [key: 'ref', value: '$.ref']
     ],
     genericHeaderVariables: [
        [key: 'X-GitHub-Event', regexpFilter: '']
     ],

     causeString: 'Triggered on $ref',

     token: '123456',

     printContributedVariables: true,
     printPostContent: true,

     silentResponse: false,

     regexpFilterText: '$ref',
     regexpFilterExpression: 'refs/heads/' + 'master'
    )
  }

    stages{...

来自gitbucket Webhook的响应正文:

{"status":"ok","data":{"triggerResults":{"testePipeline":{"id":0,"regexpFilterExpression":"refs/heads/master","regexpFilterText":"","resolvedVariables":{"ref":"","x_github_event":"","x_github_event_0":""},"triggered":false,"url":""}}}}

2 个答案:

答案 0 :(得分:1)

我遇到了与上述相同的问题,

{
  "jobs": {
    "Test": {
      "regexpFilterExpression": "(refs/heads/Dev|refs/heads/master)",
      "triggered": false,
      "resolvedVariables": {
        "ref": ""
      },
      "regexpFilterText": "",
      "id": 0,
      "url": ""
    }
  },
  "message": "Triggered jobs."
}

原因是我的内容类型在Github中不是application / json。更正了它,并且构建运行正常。

答案 1 :(得分:0)

就我而言,问题出在GitLab方面。使用此配置:

triggers {
        GenericTrigger(
            genericVariables: [
                [key: 'user_name', value: '$.user_name'],
                [key: 'checkout_sha', value: '$.checkout_sha'],
                [key: 'web_url', value: '$.project.web_url'],
                [key: 'ref', value: '$.ref'],
                [key: 'tag', value: '$.ref', regexpFilter: 'refs/tags/'],
            ],

            causeString: '$user_name pushed tag $tag to $web_url referencing $checkout_sha',

            token: 'abc123',

            printContributedVariables: true,
            printPostContent: true,

            silentResponse: false,

            regexpFilterText: '$ref',
            regexpFilterExpression: '^refs/tags/.*'
        )
    }

如果我从终端推送标签或在GitLab WebUI上添加标签,但不能通过测试“ Tag Push” <<,则可以使用 Tag Push Webhook / strong> Webhook按钮。

原来,这是一个已知问题:https://gitlab.com/gitlab-org/gitlab-foss/issues/52556 在两种情况下,请求标头都将是相同的推送。

在测试Push触发器后请求标头和正文的一部分:


Content-Type: application/json
X-Gitlab-Event: Push Hook

{
  "object_kind": "push",
  "event_name": "push",
  "before": "ab5183fcf2d4e698f1cf6228d0c1532ac7815bcc",
  "after": "3045da963cc63720c3bbc3c1217ecf2708035bfe",
  "ref": "refs/heads/master",
.
.
.

在测试标签推送触发后请求标头和正文的一部分:

Content-Type: application/json
X-Gitlab-Event: Tag Push Hook

{
  "object_kind": "push",
  "event_name": "push",
  "before": "ab5183fcf2d4e698f1cf6228d0c1532ac7815bcc",
  "after": "3045da963cc63720c3bbc3c1217ecf2708035bfe",
  "ref": "refs/heads/master",
.
.
.

我强烈建议您同时检查请求标头正文。 当然,如果您的过滤器正常运行,可能会出现“触发”:错误。例如,如果我发送一个常规的推送事件,则结果将是成功,并且触发状态为假。这是正确的,因为触发器效果很好,但您的过滤器也是如此。