我想根据合并请求在gitlab中为CI运行一些工作。
我创建了一个Webhook和一个触发器,并且Webhook在合并请求事件
上触发此触发器触发两次:在创建和合并时触发。
我不希望在合并时触发该触发器,因为对我而言这没用。
我该如何解决?
谢谢
答案 0 :(得分:0)
据我所知,push事件运行正常
https:// {$ jenkins.url} /git/notifyCommit?url=ssh://git@gitlab.ing.net:2222/ {$ group} / {$ project} .git
答案 1 :(得分:0)
答案 2 :(得分:0)
扩展Joao Vitorino的答案。 通过Webhook接收到json数据后,您可以根据“ action”的值进行决策。您可以在“ object_attributes”对象中找到它。
"object_attributes": {
"assignee_id": 20,
"author_id": 20,
"created_at": "2018-09-04 09:39:25 UTC",
"description": "blub\\r\\nblub2",
"head_pipeline_id": null,
"id": 85,
"iid": 3,
"last_edited_at": "2018-09-04 09:50:21 UTC",
"last_edited_by_id": 20,
"merge_commit_sha": "035683abb9eae299399210ddd79a0f3b93bc4bbd",
"merge_error": null,
"merge_params": {
"force_remove_source_branch": "0"
},
"merge_status": "can_be_merged",
"merge_user_id": null,
"merge_when_pipeline_succeeds": false,
"milestone_id": null,
"source_branch": "sourceBranch",
"source_project_id": 34,
"state": "merged",
"target_branch": "develop",
"target_project_id": 34,
"time_estimate": 0,
"title": "Feature/olatce 11380",
"updated_at": "2018-09-04 09:50:25 UTC",
"updated_by_id": 20,
"url": "url-to-gitlab.com",
"source": {
},
"target": {
},
"last_commit": {
},
"work_in_progress": false,
"total_time_spent": 0,
"human_total_time_spent": null,
"human_time_estimate": null,
"action": "merge"
},
这是对象中的最后一个字段,可以具有以下值:
有了这个,您应该能够决定如何处理触发器。
答案 3 :(得分:0)
您可以为此使用Generic Webhook Trigger Plugin。
如果配置这些变量:
MR_OBJECT_KIND
为$.object_kind
MR_ACTION
为$.object_attributes.action
MR_OLD_REV
为$.object_attributes.oldrev
,过滤文字为:$MR_OBJECT_KIND $MR_ACTION $MR_OLD_REV
将表达式过滤为:^merge_request\s(update\s.{40}$|open.*)
然后,作业仅应在创建或更新时触发。