如何将GitHub Actions的CI测试结果推送至Slack?
实现GitHub Actions CI测试结果推送至Slack
下面两种常用方案可实现需求,任选其一即可:
方案一:使用官方Slack GitHub Action
- 在Slack平台创建应用,获取
xoxb-开头的Bot Token,为该Bot分配chat:write权限后,将Bot邀请到目标通知频道。 - 进入GitHub仓库的「Settings」→「Secrets and variables」→「Actions」,添加名为
SLACK_BOT_TOKEN的密钥,值为上述Bot Token。 - 修改你的
.github/workflows/verify.yml,在tests任务末尾添加通知步骤:
name: Verify CI on: [push] jobs: tests: name: Tests # 原有的任务配置... steps: # 原有的测试步骤... - name: 发送Slack测试结果通知 uses: slackapi/slack-github-action@v1.23.0 if: always() # 无论测试成功/失败都发送通知 with: channel-id: '你的Slack频道ID' # 替换为实际频道ID slack-message: | *CI测试结果*: ${{ job.status == 'success' ? ':white_check_mark: 成功' : ':x: 失败' }} *仓库*: ${{ github.repository }} *提交哈希*: ${{ github.sha }} *触发者*: ${{ github.actor }} env: SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
方案二:使用Slack Incoming Webhook
- 在Slack中创建Incoming Webhook,获取对应的Webhook URL(格式为
https://hooks.slack.com/services/...)。 - 在GitHub仓库的Actions密钥中添加名为
SLACK_WEBHOOK_URL的密钥,值为上述Webhook URL。 - 修改
verify.yml添加通知步骤:
name: Verify CI on: [push] jobs: tests: name: Tests # 原有的任务配置... steps: # 原有的测试步骤... - name: 发送Slack测试结果通知 if: always() env: SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} STATUS_EMOJI: ${{ job.status == 'success' ? ':white_check_mark:' : ':x:' }} run: | curl -X POST -H 'Content-type: application/json' \ --data "{\"text\":\"*CI测试结果*: $STATUS_EMOJI ${{ job.status }}\n*仓库*: ${{ github.repository }}\n*提交哈希*: ${{ github.sha }}\n*触发者*: ${{ github.actor }}\"}" \ $SLACK_WEBHOOK
自定义提示
- 通过
if: always()确保测试无论成功、失败还是被取消,都会发送通知;如果只需要失败时通知,改为if: failure()即可。 - 可根据需求扩展消息内容,比如添加测试报告链接、触发分支等信息。
内容的提问来源于stack exchange,提问作者knagode
相关产品推荐
相关产品推荐

