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

GitLab Webhook自定义模板添加额外参数失败求助

GitLab Webhook自定义模板添加额外参数报错解决

问题原因

你尝试的两种模板都会导致JSON语法错误,因为default_webhook_data渲染后是完整的JSON对象(比如{"object_kind": "push", ...}),直接将其放在外层JSON的大括号中,会出现{ {...}, "custom_data": ... }这种无效结构——JSON对象中不能直接并列两个对象,必须是键值对形式。

正确解决方案

方案1:使用Liquid的merge过滤器合并数据

这是最简洁的方法,利用GitLab支持的Liquid模板merge过滤器,将默认Webhook数据和自定义数据合并为一个合法的JSON对象:

{{ default_webhook_data | merge({
  "custom_data": {
    "environment": "{{ env.ENVIRONMENT }}",
    "team": "{{ project.namespace }}",
    "deployment_type": "{{ ci_environment_name }}",
    "priority": "high"
  }
}) }}

该模板会保留default_webhook_data的所有字段,同时添加custom_data字段,渲染后是结构合法的JSON。

方案2:手动枚举默认字段(按需使用)

如果需要对默认字段进行修改或筛选,可以手动列出默认Webhook的字段,再追加自定义字段:

{
  "object_kind": "{{ object_kind }}",
  "event_name": "{{ event_name }}",
  "project": {{ project | json }},
  // 按需添加其他默认字段
  "custom_data": {
    "environment": "{{ env.ENVIRONMENT }}",
    "team": "{{ project.namespace }}",
    "deployment_type": "{{ ci_environment_name }}",
    "priority": "high"
  }
}

注意:使用{{ project | json }}可以将对象直接序列化为JSON格式,避免手动拼接字段的麻烦。

注意事项

  • 确保模板中使用的变量(如env.ENVIRONMENT、ci_environment_name)在当前Webhook触发的事件上下文中存在,否则会渲染为空值或导致报错。
  • 配置完成后,使用GitLab Webhook的「Test」功能查看渲染后的JSON内容,验证结构是否合法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 08:02:14