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

如何为GitLab配置Discord自定义Embed Message通知模板

实现GitLab/GitHub向Discord发送自定义WebHook消息

GitLab 自定义消息实现方式

方法1:项目钩子自定义Payload

  1. 进入GitLab项目的「设置」→「集成」→「项目钩子」
  2. 填入你的Discord频道WebHook URL,勾选Merge Request相关触发事件(如「Merge request events」)
  3. 在「自定义数据(Custom data)」栏,按照Discord的Embed格式编写JSON模板,GitLab会自动替换模板中的变量(比如{{ user.name }}、{{ url }}等),示例:
{
  "embeds": [
    {
      "title": "Merge Request 通知",
      "description": "**发起者**: {{ user.name }}\n**分支**: {{ source_branch }} → {{ target_branch }}\n**查看链接**: {{ url }}",
      "color": 3066993,
      "footer": {
        "text": "GitLab 自动推送"
      }
    }
  ]
}
  1. 保存钩子后,触发Merge Request事件时,Discord频道就会收到自定义格式的消息

方法2:CI/CD脚本推送

在项目根目录创建.gitlab-ci.yml,添加自定义通知任务,利用GitLab CI变量传递WebHook地址:

send_discord_mr_notify:
  stage: notify
  script:
    - |
      curl -X POST -H "Content-Type: application/json" \
      -d '{
        "embeds": [
          {
            "title": "Merge Request 更新 #${CI_MERGE_REQUEST_IID}",
            "description": "标题: ${CI_MERGE_REQUEST_TITLE}\n状态: ${CI_MERGE_REQUEST_STATE}\n作者: ${GITLAB_USER_NAME}\n链接: ${CI_MERGE_REQUEST_URL}",
            "color": 15105570
          }
        ]
      }' $DISCORD_WEBHOOK_URL
  only:
    - merge_requests

需在项目「设置」→「CI/CD」→「变量」中添加DISCORD_WEBHOOK_URL变量,值为你的Discord WebHook地址

GitHub 自定义消息实现方式

方法1:GitHub Actions 推送

创建.github/workflows/discord-pr-notify.yml配置文件,通过Actions触发Pull Request事件时推送自定义消息:

name: Discord PR Notify
on:
  pull_request:
    types: [opened, synchronize, reopened, closed]

jobs:
  send_notification:
    runs-on: ubuntu-latest
    steps:
      - name: 发送自定义Discord消息
        uses: actions/github-script@v6
        with:
          script: |
            let color = 5763719; // 绿色代表新建/重新打开
            if (context.payload.action === 'closed') {
              color = 15158332; // 红色代表关闭
            }
            const payload = {
              embeds: [
                {
                  title: `Pull Request ${context.payload.action} #${context.payload.number}`,
                  description: `**标题**: ${context.payload.pull_request.title}\n**作者**: ${context.payload.pull_request.user.login}\n**分支**: ${context.payload.pull_request.head.ref} → ${context.payload.pull_request.base.ref}\n**链接**: ${context.payload.pull_request.html_url}`,
                  color: color
                }
              ]
            };
            await fetch(process.env.DISCORD_WEBHOOK, {
              method: 'POST',
              headers: { 'Content-Type': 'application/json' },
              body: JSON.stringify(payload)
            });
        env:
          DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}

将Discord WebHook地址添加到仓库「Settings」→「Secrets and variables」→「Actions」的Secrets中

方法2:仓库WebHook自定义Payload

进入GitHub仓库「Settings」→「Webhooks」→「Add webhook」,填入Discord WebHook URL,选择「application/json」内容类型,勾选Pull Request相关事件。若需要更灵活的自定义,可结合本地脚本转换Payload格式后再推送给Discord。

核心注意点

自定义消息需遵循Discord WebHook的格式规范,主要用embeds字段实现富文本消息,可自定义颜色(用十进制颜色值)、标题、描述、字段、页脚等元素,根据需求调整模板即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 07:50:05