GitHub Actions + Server酱:CI 状态实时推送
效果:当 GitHub Actions 工作流运行失败(或成功)时,你的微信会立即收到包含仓库、分支、提交和运行详情的通知。
前置条件
- 一个 Server酱 SendKey。如果你还没有,请参考 30 秒获取 SendKey 教程。
- 一个拥有 GitHub 仓库的 GitHub 账号,并具备配置仓库 Secrets 的权限。
配置步骤
第一步:在 GitHub 仓库中添加 SendKey
- 进入你的 GitHub 仓库页面。
- 点击顶部菜单的 Settings。
- 在左侧边栏找到 Secrets and variables,点击 Actions。
- 点击 New repository secret 按钮。
- 在 Name 输入框中填写
SERVERCHAN_SENDKEY。 - 在 Value 输入框中粘贴你从 Server酱 官网获取的 SendKey。
- 点击 Add secret 保存。
第二步:在 Workflow 文件中添加通知步骤
在你的 GitHub Actions 工作流文件 (.github/workflows/*.yml) 中,添加一个发送通知的 step。以下代码可直接复制使用:
- name: 发送 Server酱 通知
if: failure() # 仅在之前的步骤失败时运行
run: |
curl -sS -X POST "https://sctapi.ftqq.com/${{ secrets.SERVERCHAN_SENDKEY }}.send" \
-d "title=构建失败 ${{ github.repository }}" \
-d "desp=分支 ${{ github.ref_name }},提交 ${{ github.sha }},详情 ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
将这段代码放在工作流的 jobs.<job_id>.steps 部分,通常放在所有核心构建/部署步骤之后。
完整示例
以下是一个简单的 Node.js 项目 CI 工作流示例,在测试失败时发送通知:
name: CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: 安装依赖
run: npm ci
- name: 运行测试
run: npm test
# Server酱 通知步骤
- name: 发送构建失败通知
if: failure()
run: |
curl -sS -X POST "https://sctapi.ftqq.com/${{ secrets.SERVERCHAN_SENDKEY }}.send" \
-d "title=CI 失败 ${{ github.repository }}" \
-d "desp=分支 ${{ github.ref_name }},提交 ${{ github.sha }},详情 ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
常见问题
如何修改通知触发的时机?
修改通知步骤中的 if 条件。if: failure() 表示仅当之前步骤失败时运行;if: success() 表示仅当之前步骤成功时运行;if: always() 表示无论成功失败都运行。不写 if 条件则默认仅在前序步骤成功时运行。
消息没收到怎么办? 请首先访问 Server酱 常见问题与排查页面,按照指引检查 SendKey 是否正确、通道是否配置、以及消息是否被过滤。同时,在 GitHub Actions 的日志中查看 curl 命令的执行结果和返回的 JSON 信息。
免费版有发送限制吗? Server酱 免费版每日可发送 5 条消息,每分钟上限 50 条。订阅会员目前特价最低 3 元/月,一天最多可发 1000 条(价格详情)。
可以推送到企业微信或钉钉群吗? 可以。Server酱 支持将消息推送到微信服务号、企业微信应用、钉钉群机器人、飞书群机器人以及 Server酱³ App。配置方法请参考 通道对比与配置指南。
如何自定义通知标题和内容?
修改 curl 命令中的 title 和 desp 参数即可。desp 支持 Markdown 格式。你可以利用 GitHub Actions 提供的丰富上下文变量(如 github.actor 触发者)来丰富消息内容。
相关集成
- Python 脚本推送 - 在本地脚本或服务器任务中集成推送。
- Uptime Kuma 宕机告警 - 监控网站状态,宕机时即刻通知。
- 青龙面板任务通知 - 定时任务执行结果推送。