GenericWebhookTrigger 不触发特定构建
GenericWebhookTrigger not triggering specific build
我通常有 Jenkins 运行 和一个规格如下的管道。我将管道配置设置为使用与管道中指定的配置相同的通用 Webhook 触发器。 webhook 也在我的 gitbucket 存储库中配置为仅发送 push 触发器。但是当我测试它时,响应是 200 和 body 响应 "triggered":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 的响应 body:
{"status":"ok","data":{"triggerResults":{"testePipeline":{"id":0,"regexpFilterExpression":"refs/heads/master","regexpFilterText":"","resolvedVariables":{"ref":"","x_github_event":"","x_github_event_0":""},"triggered":false,"url":""}}}}
就我而言,问题出在 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 上添加标签但无法通过测试执行相同操作 "Tag Push" webhook 按钮。
原来这是已知问题:https://gitlab.com/gitlab-org/gitlab-foss/issues/52556
在这两种情况下,请求 header 将是相同的推送。
请求header和部分body经过测试Push触发:
Content-Type: application/json
X-Gitlab-Event: Push Hook
{
"object_kind": "push",
"event_name": "push",
"before": "ab5183fcf2d4e698f1cf6228d0c1532ac7815bcc",
"after": "3045da963cc63720c3bbc3c1217ecf2708035bfe",
"ref": "refs/heads/master",
.
.
.
请求header和部分body测试标签推送触发后:
Content-Type: application/json
X-Gitlab-Event: Tag Push Hook
{
"object_kind": "push",
"event_name": "push",
"before": "ab5183fcf2d4e698f1cf6228d0c1532ac7815bcc",
"after": "3045da963cc63720c3bbc3c1217ecf2708035bfe",
"ref": "refs/heads/master",
.
.
.
我强烈建议您也检查 请求 headers 和 body。
当然,如果您的过滤器工作正常,可能会出现 "triggered": false。例如,如果我发送一个常规的推送事件,结果将是成功的,但触发状态为假。这是正确的,因为触发器运行良好,但您的过滤器也运行良好。
我遇到了和上面一样的问题,
{
"jobs": {
"Test": {
"regexpFilterExpression": "(refs/heads/Dev|refs/heads/master)",
"triggered": false,
"resolvedVariables": {
"ref": ""
},
"regexpFilterText": "",
"id": 0,
"url": ""
}
},
"message": "Triggered jobs."
}
原因是我的内容类型不是 Github 中的 application/json。更正了它,构建 运行 很好。
我通常有 Jenkins 运行 和一个规格如下的管道。我将管道配置设置为使用与管道中指定的配置相同的通用 Webhook 触发器。 webhook 也在我的 gitbucket 存储库中配置为仅发送 push 触发器。但是当我测试它时,响应是 200 和 body 响应 "triggered":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 的响应 body:
{"status":"ok","data":{"triggerResults":{"testePipeline":{"id":0,"regexpFilterExpression":"refs/heads/master","regexpFilterText":"","resolvedVariables":{"ref":"","x_github_event":"","x_github_event_0":""},"triggered":false,"url":""}}}}
就我而言,问题出在 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 上添加标签但无法通过测试执行相同操作 "Tag Push" webhook 按钮。
原来这是已知问题:https://gitlab.com/gitlab-org/gitlab-foss/issues/52556 在这两种情况下,请求 header 将是相同的推送。
请求header和部分body经过测试Push触发:
Content-Type: application/json
X-Gitlab-Event: Push Hook
{
"object_kind": "push",
"event_name": "push",
"before": "ab5183fcf2d4e698f1cf6228d0c1532ac7815bcc",
"after": "3045da963cc63720c3bbc3c1217ecf2708035bfe",
"ref": "refs/heads/master",
.
.
.
请求header和部分body测试标签推送触发后:
Content-Type: application/json
X-Gitlab-Event: Tag Push Hook
{
"object_kind": "push",
"event_name": "push",
"before": "ab5183fcf2d4e698f1cf6228d0c1532ac7815bcc",
"after": "3045da963cc63720c3bbc3c1217ecf2708035bfe",
"ref": "refs/heads/master",
.
.
.
我强烈建议您也检查 请求 headers 和 body。 当然,如果您的过滤器工作正常,可能会出现 "triggered": false。例如,如果我发送一个常规的推送事件,结果将是成功的,但触发状态为假。这是正确的,因为触发器运行良好,但您的过滤器也运行良好。
我遇到了和上面一样的问题,
{
"jobs": {
"Test": {
"regexpFilterExpression": "(refs/heads/Dev|refs/heads/master)",
"triggered": false,
"resolvedVariables": {
"ref": ""
},
"regexpFilterText": "",
"id": 0,
"url": ""
}
},
"message": "Triggered jobs."
}
原因是我的内容类型不是 Github 中的 application/json。更正了它,构建 运行 很好。