如何为GitLab配置Discord自定义Embed Message通知模板
实现GitLab/GitHub向Discord发送自定义WebHook消息
GitLab 自定义消息实现方式
方法1:项目钩子自定义Payload
- 进入GitLab项目的「设置」→「集成」→「项目钩子」
- 填入你的Discord频道WebHook URL,勾选Merge Request相关触发事件(如「Merge request events」)
- 在「自定义数据(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 自动推送" } } ] }
- 保存钩子后,触发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
相关产品推荐
相关产品推荐

