一个基于 Cloudflare Worker 的多平台仓库更新监控工具,支持 GitHub、Gitee、GitLab 和 CNB 仓库的代码提交监控、定时检测和通知功能。

⚠️⚠️部署前先看这里⚠️⚠️
在构建命令处填写:npm install --save-dev wrangler@4,这是必须的,否则会报错,因为构建默认使用的是wrangler@3,不支持自动创建kv命名空间
在 Cloudflare Worker 的设置中配置以下环境变量:
| 变量名 | 必填 | 说明 | 默认 |
|---|---|---|---|
DEV_MODE | 否 | 是否启用开发模式 | true |
NOTIFY_ON_FIRST_CHECK | 否 | 首次检测是否通知 | false |
TZ | 否 | 时区设置 | UTC+8 |
| 变量名 | 必填 | 说明 | 示例 |
|---|---|---|---|
GITHUB_REPO | 否 | 监控的 GitHub 仓库列表,支持逗号或换行分隔 | facebook/react,vuejs/core |
GITHUB_BRANCH | 否 | 默认分支名称 | main |
GITHUB_TOKEN | 否 | Personal Access Token(提高 API 限流配额) | ghp_xxxxxxxxxxxx |
GITHUB_CACHE_TTL | 否 | 缓存过期时间(秒) | 300 |
| 变量名 | 必填 | 说明 | 示例 |
|---|---|---|---|
GITEE_REPO | 否 | 监控的 Gitee 仓库列表,支持逗号或换行分隔 | owner/repo1,owner/repo2 |
GITEE_BRANCH | 否 | 默认分支名称 | master |
GITEE_TOKEN | 否 | 私人令牌(提高 API 限流配额) | your-gitee-token |
GITEE_CACHE_TTL | 否 | 缓存过期时间(秒) | 300 |
| 变量名 | 必填 | 说明 | 示例 |
|---|---|---|---|
GITLAB_REPO | 否 | 监控的 GitLab 仓库列表,支持逗号或换行分隔 | owner/repo1,owner/repo2 |
GITLAB_BRANCH | 否 | 默认分支名称 | main |
GITLAB_TOKEN | 否 | Private Access Token(提高 API 限流配额) | your-gitlab-token |
GITLAB_API_BASE | 否 | API 基础地址(自托管 GitLab 时需配置) | https://gitlab.example.com |
GITLAB_HOST | 否 | 主机地址(用于生成仓库链接,默认 gitlab.com) | gitlab.example.com |
GITLAB_CACHE_TTL | 否 | 缓存过期时间(秒) | 300 |
| 变量名 | 必填 | 说明 | 示例 |
|---|---|---|---|
CNB_REPO | 否 | 监控的 CNB 仓库列表,支持逗号或换行分隔 | owner/repo1,owner/repo2 |
CNB_BRANCH | 否 | 默认分支名称 | main |
CNB_TOKEN | CNB 监控必填 | API 认证 Token | your-cnb-token |
CNB_API_BASE | 否 | API 基础地址 | https://api.cnb.cool |
CNB_CACHE_TTL | 否 | 缓存过期时间(秒) | 300 |
| 变量名 | 必填 | 说明 | 示例 |
|---|---|---|---|
TELEGRAM_BOT_TOKEN | 否 | Telegram Bot Token(启用 Telegram 通知时必填) | 123456:ABC-DEF... |
TELEGRAM_CHAT_ID | 否 | Telegram 接收消息的 Chat ID(启用 Telegram 通知时必填) | 123456789 |
WECOM_WEBHOOK_URL | 否 | 企业微信机器人 Webhook URL(启用企业微信通知时必填) | https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx |
PUSHPLUS_TOKEN | 否 | PushPlus Token(启用 PushPlus 通知时必填) | your-pushplus-token |
PUSHPLUS_TOPIC | 否 | PushPlus 群组编码,不填则发给自己 | your-topic-code |
PUSHPLUS_CHANNEL | 否 | 发送渠道:wechat/mp/mail/sms,默认 wechat | wechat |
MAGICPUSH_URL | 否 | MagicPush API URL(启用 MagicPush 通知时必填) | https://your-magicpush-api.com/notify |
MAGICPUSH_TOKEN | 否 | MagicPush Bearer Token(启用 MagicPush 通知时必填) | your-magicpush-token |
MAGICPUSH_TYPE | 否 | MagicPush 通知类型 | text |
直接访问 Worker 的根路径 /,即可打开监控仪表盘页面:
https://your-worker.your-subdomain.workers.dev/
仪表盘功能:
获取仓库列表和状态(无需鉴权,支持跨域):
GET /api/repos
响应示例:
{
"code": 200,
"message": "获取成功",
"data": {
"total": 3,
"github": 2,
"cnb": 1,
"repos": [
{
"platform": "github",
"name": "facebook/react",
"branch": "main",
"key": "facebook/react@main",
"latestSha": "abc123...",
"hasUpdate": false
},
{
"platform": "cnb",
"name": "owner/repo",
"branch": "main",
"key": "cnb:owner/repo@main",
"latestSha": "abc123...",
"hasUpdate": false
}
]
}
}
CORS 支持: 该接口支持跨域请求,可用于第三方应用集成:
fetch('https://your-worker.your-subdomain.workers.dev/api/repos')
.then(res => res.json())
.then(data => console.log(data));
注意:手动触发需要设置环境变量 DEV_MODE=true,否则会返回"开发模式已关闭"。
请求说明:
/check 路径进行检测/test-notify 路径测试通知启用开发模式后:
GET /check
检测所有已配置的 GitHub、Gitee、GitLab 和 CNB 仓库。
# GitHub 仓库 GET /check?repo=owner/repo GET /check?repo=owner/repo@branch # CNB 仓库 GET /check?repo=owner/repo&type=cnb GET /check?repo=owner/repo@branch&type=cnb
# 仅检测 GitHub 仓库 GET /check?type=github # 仅检测 Gitee 仓库 GET /check?type=gitee # 仅检测 GitLab 仓库 GET /check?type=gitlab # 仅检测 CNB 仓库 GET /check?type=cnb
添加 notify=true 参数,检测到更新时会发送通知:
GET /check?notify=true GET /check?repo=owner/repo¬ify=true GET /check?type=cnb¬ify=true
测试通知配置是否正常工作:
# 测试所有通知渠道 GET /test-notify # 测试 Telegram 通知 GET /test-notify?target=telegram # 测试企业微信通知 GET /test-notify?target=wecom # 测试 PushPlus 通知 GET /test-notify?target=pushplus # 测试 MagicPush 通知 GET /test-notify?target=magicpush
响应示例(通知测试):
{
"code": 200,
"message": "通知测试完成",
"data": [
{
"channel": "telegram",
"status": "success"
},
{
"channel": "wecom",
"status": "success"
},
{
"channel": "pushplus",
"status": "success"
},
{
"channel": "magicpush",
"status": "success"
}
]
}
响应示例(CNB 仓库检测):
{
"code": 200,
"message": "检测完成",
"data": [
{
"repo": "cnb:owner/repo@main",
"platform": "cnb",
"hasUpdate": true,
"latestSha": "abc123...",
"latestDate": "2026-02-09T15:30:00Z",
"latestMessage": "Update README",
"authorName": "John Doe",
"previousSha": "def456...",
"isFirstCheck": false,
"url": "https://cnb.cool/owner/repo",
"branch": "main"
}
]
}
响应示例(开发模式已关闭):
开发模式已关闭
HTTP 状态码:403
在 Cloudflare Dashboard 中配置 Cron Triggers:
# 每 30 分钟检测一次 */30 * * * * # 每小时检测一次 0 * * * * # 每天早上 9 点检测一次 0 9 * * *
{
"code": 200,
"message": "检测完成",
"data": [
{
"repo": "facebook/react@main",
"hasUpdate": true,
"latestSha": "abc123...",
"latestDate": "2024-01-15T10:30:00Z",
"previousSha": "def456..."
},
{
"repo": "cnb:owner/repo@main",
"platform": "cnb",
"hasUpdate": true,
"latestSha": "abc123...",
"latestDate": "2026-02-09T15:30:00Z",
"latestMessage": "Update README",
"authorName": "John Doe",
"previousSha": "def456...",
"url": "https://cnb.cool/owner/repo",
"branch": "main"
}
],
"rateLimit": {
"limit": "60",
"remaining": "55",
"reset": "2024-01-15T11:00:00Z"
}
}
{
"code": 500,
"message": "检测失败",
"error": "错误详情"
}
本工具已内置支持多种通知渠道,根据环境变量自动判断启用哪些通知渠道。
配置环境变量:
TELEGRAM_BOT_TOKEN:Telegram Bot TokenTELEGRAM_CHAT_ID:接收消息的 Chat ID获取 Bot Token:
/newbot 创建新机器人获取 Chat ID:
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates 查看通知格式:
GitHub 仓库更新:
🚀 GitHub 仓库更新通知 📦 仓库:owner/repo@branch 🆔 最新 SHA:abc123... 📅 更新时间:2026-02-08 12:58:15
CNB 代码提交更新:
🚀 CNB 代码提交更新通知 📦 仓库:owner/repo@main 🆔 最新 SHA:abc123... 👤 提交者:John Doe 📝 提交信息:Update README 📅 提交时间:2026-02-09 15:30:00
配置环境变量:
WECOM_WEBHOOK_URL:企业微信群机器人的 Webhook URL获取 Webhook URL:
通知格式:
GitHub 仓库更新:
🚀 GitHub 仓库更新通知 📦 仓库:owner/repo@branch 🆔 最新 SHA:abc123... 📅 更新时间:2026-02-08 12:58:15
CNB 代码提交更新:
🚀 CNB 代码提交更新通知 📦 仓库:owner/repo@main 🆔 最新 SHA:abc123... 👤 提交者:John Doe 📝 提交信息:Update README 📅 提交时间:2026-02-09 15:30:00
配置环境变量:
PUSHPLUS_TOKEN:PushPlus Token(必填)PUSHPLUS_TOPIC:群组编码,不填则发给自己(可选)PUSHPLUS_CHANNEL:发送渠道(wechat/mp/mail/sms),默认 wechat(可选)获取 PushPlus Token:
通知格式:
GitHub 仓库更新:
🚀 GitHub 仓库更新通知 - owner/repo@branch 📦 仓库:owner/repo@branch 🆔 最新 SHA:abc123... 📅 更新时间:2026-02-08 12:58:15
CNB 代码提交更新:
🚀 CNB 代码提交更新通知 - owner/repo@main 📦 仓库:owner/repo@main 🆔 最新 SHA:abc123... 👤 提交者:John Doe 📝 提交信息:Update README 📅 提交时间:2026-02-09 15:30:00
配置环境变量:
MAGICPUSH_URL:MagicPush API URLMAGICPUSH_TOKEN:MagicPush Bearer Token通知格式:
GitHub 仓库更新:
🚀 GitHub 仓库更新 - owner/repo@branch 📦 仓库:owner/repo@branch 🆔 最新 SHA:abc123... 📅 更新时间:2026-02-08 12:58:15
CNB 代码提交更新:
🚀 CNB 代码提交更新 - owner/repo@main 📦 仓库:owner/repo@main 🆔 最新 SHA:abc123... 👤 提交者:John Doe 📝 提交信息:Update README 📅 提交时间:2026-02-09 15:30:00
您可以同时配置多个通知渠道,系统会自动检测并启用所有已配置的渠道。例如:
同时启用 Telegram 和企业微信:
TELEGRAM_BOT_TOKEN = 123456:ABC-DEF... TELEGRAM_CHAT_ID = 123456789 WECOM_WEBHOOK_URL = https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx
当检测到仓库更新时,Telegram 和企业微信都会收到通知。
同时启用所有通知渠道(Telegram + 企业微信 + PushPlus + MagicPush):
TELEGRAM_BOT_TOKEN = 123456:ABC-DEF... TELEGRAM_CHAT_ID = 123456789 WECOM_WEBHOOK_URL = https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx PUSHPLUS_TOKEN = your-pushplus-token PUSHPLUS_TOPIC = your-topic-code PUSHPLUS_CHANNEL = wechat MAGICPUSH_URL = https://your-magicpush-api.com/notify MAGICPUSH_TOKEN = your-magicpush-token
当检测到仓库更新时,所有已配置的通知渠道都会收到通知。
如需添加自定义通知渠道,可以在 worker.js 中参考 sendTelegramNotification、sendWeComNotification、sendPushPlusNotification 和 sendMagicPushNotification 函数的实现方式,添加新的通知函数,并在 notify 函数中调用。
项目内置了一个美观的监控仪表盘,采用现代深色主题设计:
直接访问 Worker 的 URL 即可:
https://your-worker.your-subdomain.workers.dev/
repo-watcher/ ├── src/ │ ├── index.js # 主入口,Worker 导出 │ ├── handlers/ # 请求处理器 │ │ ├── index.js # 处理器导出 │ │ ├── check.js # 检测处理器 │ │ ├── dashboard.js # 仪表盘处理器 │ │ ├── repos.js # 仓库列表处理器 │ │ └── test-notify.js # 通知测试处理器 │ ├── services/ # 服务层 │ │ ├── index.js # 服务导出 │ │ ├── github.js # GitHub API 服务 │ │ ├── gitee.js # Gitee API 服务 │ │ ├── gitlab.js # GitLab API 服务 │ │ ├── cnb.js # CNB API 服务 │ │ └── notify.js # 通知服务 │ └── utils/ # 工具函数 │ ├── index.js # 工具导出 │ ├── parser.js # 解析工具 │ ├── kv.js # KV 操作工具 │ └── datetime.js # 日期时间工具 ├── static/ │ ├── dashboard.html # 仪表盘页面 │ └── favicon.svg # 网站图标 ├── wrangler.toml # Wrangler 配置文件 ├── package.json # 项目配置 └── README.md # 项目文档
GitHub 仓库格式:
owner/repo:使用默认分支owner/repo@branch:指定分支Gitee 仓库格式:
owner/repo:使用默认分支owner/repo@branch:指定分支GitLab 仓库格式:
owner/repo:使用默认分支owner/repo@branch:指定分支CNB 仓库格式:
owner/repo:使用默认分支owner/repo@branch:指定分支GitHub 检测流程:
NOTIFY_ON_FIRST_CHECK=true,则调用通知函数Gitee 检测流程:
GitLab 检测流程:
CNB 检测流程:
NOTIFY_ON_FIRST_CHECK=true,则调用通知函数首次检测行为:
NOTIFY_ON_FIRST_CHECK=true:首次检测也会发送通知GITHUB_CACHE_TTL(默认 300 秒)GITEE_CACHE_TTL(默认 300 秒)GITLAB_CACHE_TTL(默认 300 秒)CNB_CACHE_TTL(默认 300 秒)GitHub 认证:
Gitee 认证:
private_token 参数认证GitLab 认证:
PRIVATE-TOKEN header 认证GITLAB_API_BASE 和 GITLAB_HOSTCNB 认证:
CNB_TOKEN 才能使用 CNB 监控CNB_API_BASE)CNB_CACHE_TTLDEV_MODE=true,测试完成后建议关闭MIT License