git - Gitlab:仅在创建和更新时触发合并请求的 CI Webhook
问题描述
我想根据合并请求在 gitlab 中为 CI 运行一些工作。
我创建了一个 webhook 和一个触发器,并且 webhook 在合并请求事件上触发
此触发器被触发两次:创建时和合并时。
我不希望在合并时触发该触发器,因为对我来说没用。
我该如何解决这个问题?
谢谢
解决方案
扩展 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"
},
它是对象中的最后一个字段,可以具有以下值:
- 打开(对于新创建的合并请求)
- 更新(对于更新的 MR,源分支中的新提交或 MR 的编辑)
- 重新打开
- 关
- 合并
有了这个,您应该能够决定如何处理触发器。
推荐阅读
- javascript - 关系不存在多行插入与 pg-promise
- python - Python:替换for循环中的字符
- python - 是否有结合`while`和`with`的Python结构?
- jquery - 如何使错误显示在您的输入下方
- sql - 在 CASE 语句中使用 INSERT INTO 时出错
- sql - 为什么必须在 IDENTITY_INSERT ON 时指定列?
- java - 避免在多线程代码中使用关闭标志
- jquery - 触发 jQuery UI 对话框取消操作时,父级中的按钮出现问题
- android - 如何从另一个类中的另一个方法更新ANDROID中的progressBar
- mysql - 如何在 mysql 或 php 脚本中更新基于依赖项的列?