通过GitHub Webhook配置Discord接收部署工作流成功/失败通知
GitHub Webhook 推送博客部署通知到Discord配置方案
问题原因
你配置后收不到通知,大概率是两个原因:
- 如果你用的是Discord内置的GitHub集成Webhook,它默认只适配有限的事件类型,你手动勾选的Workflow runs、Workflow jobs这类事件的payload结构它不解析,就算GitHub推了事件也不会生成频道消息
- 如果你用的是普通Webhook,可能是Content type配置错误,或者事件勾选不全导致没有触发推送
优先推荐方案:在部署工作流中直接加通知步骤
这个方案可控性最高,只会推送你当前博客部署工作流的结果,不会被仓库其他工作流、其他事件的通知干扰,不需要配置全局Webhook。
操作步骤如下:
- 打开Discord对应频道的集成设置,新建普通Webhook(不要选GitHub专属的集成Webhook),复制生成的Webhook URL
- 打开你的博客GitHub仓库,依次进入
Settings→Secrets and variables→Actions,点击New repository secret,名称填DISCORD_WEBHOOK,值粘贴刚才复制的Discord Webhook URL,保存 - 修改你的
deploy-site.yaml部署配置文件,在末尾添加通知逻辑,示例如下:
# 仅需修改两处:1. needs后的参数替换为你自己的部署job的名称 2. status后的deploy同样替换为你的部署job名称 notify: runs-on: ubuntu-latest needs: [deploy] # 这里替换为你实际部署步骤对应的job名称,确保部署完成后才执行通知 if: always() # 配置为部署成功、失败都会触发通知 steps: - name: 推送部署结果到Discord uses: sarisia/actions-status-discord@v1 with: webhook: ${{ secrets.DISCORD_WEBHOOK }} status: ${{ needs.deploy.result }} # 这里的deploy同样替换为你的部署job名称 title: 个人博客部署结果 description: | 部署分支: ${{ github.ref_name }} 提交版本: ${{ github.sha }} 操作人: ${{ github.actor }} username: 博客部署通知
- 提交修改后的工作流文件即可,后续每次部署完成都会自动推送结果到Discord频道
若要继续使用全局Webhook的修复方案
如果不想修改工作流,坚持用全局Webhook,按以下步骤调整:
- 触发事件除了你已经勾选的Workflow runs、Workflow jobs、Page builds之外,额外勾选
Check runs事件,工作流的状态变更会通过该事件推送 - 打开Webhook配置,确认
Content type选择的是application/json,不要用默认的application/x-www-form-urlencoded格式,Discord无法解析后者的事件payload - 如果用的是Discord内置的GitHub集成Webhook,需要额外勾选
Push事件才能识别Pages构建的通知
内容的提问来源于stack exchange,提问作者Ezzmazz
相关产品推荐
相关产品推荐

