GenericWebhookTrigger не запускает конкретную сборку - PullRequest
2 голосов
/ 04 октября 2019

У меня нормально работает Jenkins и конвейер со спецификациями ниже. Я установил конфигурацию конвейера для использования Generic Webhook Trigger с такой же конфигурацией, как указано в конвейере. В моем gitbucket-репозитории также настроен webhook для отправки только push триггеров. Но когда я проверяю его, ответ равен 200, а ответ тела «сработал»: ложь.

Трубопровод:

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":""}}}}

1 Ответ

0 голосов
/ 22 октября 2019

В моем случае проблема была на стороне 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/.*'
        )
    }

Я мог бы использовать Tag Push webhook, если бы я вытолкнул тег из своего терминала или переключился на GitLab WebUI, но не смог сделать то же самое черезtest «Tag Push» кнопка 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",
.
.
.

Заголовок запроса и часть тела после теста Push триггера:

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

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

Я настоятельно рекомендуюВы также проверяете заголовки запроса и body . Конечно, «срабатывает»: false может прийти, если ваши фильтры работают должным образом. Например, если я отправлю обычное push-событие, результатом будет успех с ложным состоянием триггера. Это правильно, потому что триггер работал хорошо, но ваш фильтр тоже.

...