You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何区分Gitlab Webhook中action为update的merge_request事件及操作标识?

区分GitLab Webhook中action为update的Merge Request事件

可以通过Webhook Payload里的changes字段及特定属性的变更,精准区分不同类型的update操作:

一、识别「标记为Ready」的操作

当把草稿/进行中(WIP/Draft)状态的MR切换为Ready时,Payload会出现以下明确特征:

  • object_attributes[work_in_progress] 值从true变为false(GitLab 14.0+版本中object_attributes[draft]字段与该字段等价)
  • changes字段会包含work_in_progress(或draft)的变更记录,示例:
"changes": {
  "work_in_progress": {
    "previous": true,
    "current": false
  }
}

非草稿MR的普通编辑(比如修改标题、描述)不会触发这个字段的变更,以此就能和普通编辑操作区分开。

二、识别「解决所有线程」的操作

执行「解决所有线程」操作时,Payload的action仍为update,但会包含专属标识:

  • object_attributes[resolved_all_discussions] 被设为true
  • changes字段中会出现该属性的变更记录,示例:
"changes": {
  "resolved_all_discussions": {
    "previous": false,
    "current": true
  }
}

单独解决单个线程不会触发这个字段的变更,只有一次性解决所有讨论线程时才会出现该记录。

三、区分标签变更操作

标签变更时,changes字段会包含labels的变更明细,示例:

"changes": {
  "labels": {
    "previous": [{"id": 123, "title": "bug"}],
    "current": [{"id": 123, "title": "bug"}, {"id": 456, "title": "reviewed"}]
  }
}

此时work_in_progress和resolved_all_discussions字段不会发生变化,可直接与前两种操作区分。

内容的提问来源于stack exchange,提问作者gobsej

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 15:57:13