CircleCI + Server酱:流水线构建状态推送到微信
效果:CircleCI 流水线构建成功或失败时,自动将状态和链接推送到微信
前置条件
- 获取 Server酱 SendKey(30 秒获取教程)
- 拥有 CircleCI 项目及修改
.circleci/config.yml的权限
配置步骤
CircleCI 接入 Server酱 推荐在 job 内使用 curl 直连 API,这样可以获取构建状态等动态内容。
1. 配置 SendKey 环境变量
在 CircleCI 项目或 Context 中添加环境变量 SERVERCHAN_SENDKEY,值为你的 SendKey。不要将 SendKey 硬编码写进 config.yml 文件(具体环境变量配置入口以应用内实际显示为准)。
2. 修改 config.yml
在 .circleci/config.yml 的 steps 中增加一个 run 步骤,调用 Server酱 API:
steps:
- run:
name: Send Notification
command: |
curl -sS -X POST "https://sctapi.ftqq.com/${SERVERCHAN_SENDKEY}.send" \
--data-urlencode "title=CircleCI $CIRCLE_JOB" \
--data-urlencode "desp=$CIRCLE_BUILD_URL"
3. 使用 Webhook 方式(可选)
如果仅需固定文案通知,可在 Project Settings → Webhooks 中,将 URL 填写为 https://sctapi.ftqq.com/你的SENDKEY.send?title=CircleCI。此方式发送固定 JSON,无法直接携带构建状态等动态内容,如需动态内容需中转处理。
完整示例
以下是一个包含构建通知步骤的完整 job 配置。如需根据构建成功或失败发送不同内容,请参考 CircleCI 官方文档配置条件执行步骤。
version: 2.1
jobs:
build:
docker:
- image: cimg/base:stable
steps:
- run:
name: Build
command: echo "Simulating build process..."
- run:
name: Notify
command: |
curl -sS -X POST "https://sctapi.ftqq.com/${SERVERCHAN_SENDKEY}.send" \
--data-urlencode "title=CircleCI $CIRCLE_JOB" \
--data-urlencode "desp=$CIRCLE_BUILD_URL"
常见问题
发送额度是多少?
免费用户每日发送 5 条,每分钟上限 50 条;订阅会员目前特价最低 3 元/月,一天最多可发 1000 条(价格详情)。
消息没有收到怎么办?
检查 CircleCI job 日志中 curl 请求是否报错,并参考 常见问题与排查 检查 SendKey 与通道配置。Server酱 支持推送到微信服务号/企业微信/钉钉/飞书等多个通道,详见 /getting-started/channels/。
频率超限怎么处理?
单个 SendKey 每分钟请求上限为 50。若同时触发大量并发构建,建议在脚本中加入延时,或合并通知内容。
Webhook 方式如何推送动态内容?
CircleCI 原生 Webhooks 发送固定 JSON 结构,无法直接修改为 Server酱 所需的参数格式。如需推送构建详情等动态内容,建议使用 job 内 curl 直连 API 的方式。
相关集成
- /integrations/python/ —— Python 脚本推送
- /integrations/uptime-kuma/ —— Uptime Kuma 宕机告警
- /integrations/qinglong/ —— 青龙面板任务通知