定时任务
| 名称 | 平台 | Cron | 状态 | 最后执行 | 下次执行 | 操作 |
|---|---|---|---|---|---|---|
| 加载中... | ||||||
执行历史
| 任务 | 状态 | 开始时间 | 耗时 | 响应码 | 日志 |
|---|---|---|---|---|---|
| 加载中... | |||||
平台连接
API Keys
| 名称 | 创建时间 | 最后使用 | 操作 |
|---|---|---|---|
| 加载中... | |||
使用文档
快速开始
CronHub 是一个运行在 Cloudflare Workers 上的定时任务管理平台,支持 GitHub Actions 触发和 HTTP 请求两种方式。
1
连接平台
前往「平台连接」,通过 GitHub OAuth 授权或手动填写 Token,添加一个平台连接。
2
新建任务
前往「定时任务」,点击「+ 新建任务」,填写任务名称、Cron 表达式、选择平台和目标仓库/接口。
3
查看执行
任务按计划自动执行,结果可在「执行历史」中查看,包含状态、耗时和响应日志。
定时任务
每个任务包含以下字段:
| 字段 | 说明 | 示例 |
|---|---|---|
名称 | 任务的显示名称,便于识别 | 每日数据同步 |
Cron | 触发时间规则,UTC 时区 | 0 1 * * * |
平台 | 执行方式:GitHub Actions 或 HTTP | GitHub Actions |
状态 | active(运行中)/ paused(已暂停) | active |
注意:Cron 触发基于 UTC 时间。北京时间 = UTC + 8,若要每天北京时间 9:00 执行,Cron 应填
0 1 * * *。
任务操作
- 暂停 / 启用:点击任务行的「暂停」或「启用」按钮,立即生效,不影响历史记录。
- 立即执行:点击「▶ 运行」可跳过等待,立即触发一次执行。
- 编辑:修改任务配置后保存,下次执行时生效。
- 删除:删除任务及其所有执行历史,不可恢复。
Cron 表达式
格式:分 时 日 月 周,共 5 段,均为 UTC 时区。
| 表达式 | 含义 | 北京时间参考 |
|---|---|---|
* * * * * | 每分钟 | — |
*/5 * * * * | 每 5 分钟 | — |
0 1 * * * | 每天 UTC 01:00 | 北京 09:00 |
0 16 * * * | 每天 UTC 16:00 | 北京 00:00 |
0 0 * * 1 | 每周一 UTC 00:00 | 北京周一 08:00 |
0 2 1 * * | 每月 1 日 UTC 02:00 | 北京 10:00 |
30 8 * * 1-5 | 工作日 UTC 08:30 | 北京 16:30 |
技巧:可使用 crontab.guru 在线验证 Cron 表达式是否正确。
平台连接
平台连接保存第三方服务的访问凭证,任务执行时通过对应连接调用目标平台。
连接 GitHub(推荐:OAuth 设备码)
- 点击「平台连接」页右上角 Connect GitHub
- 填写连接名称(如「个人账号」「公司账号」),点击「开始授权」
- 浏览器自动打开
github.com/login/device - 在 GitHub 页面输入显示的 8 位验证码
- 授权完成后弹窗自动显示头像和用户名,点击「完成」
多账号:每次点击「Connect GitHub」都会发起独立的授权流程。在 GitHub 授权页切换到不同账号登录即可连接多个 GitHub 账号,互不影响。
手动添加 Token
点击「+ 其他连接」,选择平台类型并填写 Token:
| 类型 | Token 来源 | 所需权限 |
|---|---|---|
| GitHub | Settings → Developer settings → Personal access tokens | repo、workflow |
| Cloudflare | My Profile → API Tokens | Workers 读写权限 |
| HTTP | 自定义 Bearer Token | — |
GitHub Actions 任务
通过调用 GitHub API 触发仓库的 workflow_dispatch 事件来执行任务。
配置字段
| 字段 | 说明 |
|---|---|
| 平台连接 | 选择已连接的 GitHub 账号 |
| 仓库 | 从列表选择,或点击「➕ 新建仓库...」直接创建 |
| Workflow | 选择 .github/workflows/ 下的 yml 文件,或点击「➕ 创建新 Workflow...」 |
| Ref | 触发的分支或 Tag,默认 main |
| Inputs | 可选,JSON 格式传给 Workflow 的参数 |
新建 / 编辑 Workflow 文件
- 在 Workflow 下拉选「➕ 创建新 Workflow...」,选择模板(HTTP 请求 / Python / Node.js / 空白),在编辑器中修改后点「创建文件」,文件将直接提交到 GitHub 仓库。
- 选中已有 Workflow 后,点右侧 ✏️ 按钮可加载当前内容进行编辑,保存后自动提交更新。
前提:Workflow 文件必须包含
on: workflow_dispatch 触发器,否则无法被 API 触发。
Workflow 示例
name: 定时数据同步
on:
workflow_dispatch:
inputs:
env:
description: '环境'
default: 'production'
jobs:
sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: 执行同步脚本
run: python sync.py
env:
DB_URL: ${{ secrets.DB_URL }}
HTTP 任务
直接向指定 URL 发送 HTTP 请求,适合调用 Webhook、触发自有服务接口等场景。
| 字段 | 说明 |
|---|---|
| URL | 目标接口地址,需包含协议(https://) |
| Method | GET / POST / PUT / DELETE / PATCH |
| Headers | JSON 格式,如 {"Authorization":"Bearer xxx"} |
| Body | 请求体,POST/PUT 时使用,JSON 字符串 |
HTTP 任务由 Cloudflare Worker 发出请求,目标服务器接收到的来源 IP 为 Cloudflare 的边缘节点 IP,非固定 IP。若目标服务有 IP 白名单限制,请改用 GitHub Actions 任务(在 GitHub 托管的 Runner 上执行,IP 段可查询 api.github.com/meta)。
API 调用
所有操作均可通过 REST API 完成,适合与 CI/CD 或其他系统集成。请求时需在 Header 中携带 API Key。
Authorization: Bearer <your-api-key>
常用接口
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/tasks | 获取所有任务列表 |
| POST | /api/tasks | 创建新任务 |
| POST | /api/tasks/:id/run | 立即执行一次任务 |
| PATCH | /api/tasks/:id | 更新任务(含暂停/启用) |
| DELETE | /api/tasks/:id | 删除任务 |
| GET | /api/executions | 获取执行历史 |
| GET | /api/platforms | 获取平台连接列表 |
创建任务示例
curl -X POST https://your-worker.workers.dev/api/tasks \
-H "Authorization: Bearer <key>" \
-H "Content-Type: application/json" \
-d '{
"name": "每日备份",
"cron": "0 2 * * *",
"platform": "github",
"platform_connection_id": "<connection-id>",
"config": {
"owner": "your-org",
"repo": "your-repo",
"workflow_id": "backup.yml",
"ref": "main"
}
}'
常见问题
任务显示「执行失败」,如何排查?
前往「执行历史」点击「日志」查看详细信息。常见原因:
- HTTP 任务:目标 URL 不可达、返回了 4xx/5xx 状态码
- GitHub 任务:Token 权限不足(需要
repo、workflow)、Workflow 文件缺少workflow_dispatch触发器、仓库不存在
Cron 时间不准?
所有 Cron 基于 UTC 时间。北京时间(CST)= UTC + 8,填写时注意换算。另外 Cloudflare Workers Cron 的触发精度为 ±1 分钟,属正常现象。
如何连接多个 GitHub 账号?
每次点击「Connect GitHub」都会发起独立的设备码授权。在 GitHub 授权页面切换到不同账号即可。已连接的账号会显示头像和用户名,系统会自动检测重复,同一账号不会被重复添加。
GitHub OAuth App 需要开启什么设置?
需要在 GitHub 上进入 Settings → Developer settings → OAuth Apps → 你的 App,勾选 Enable Device Flow,否则设备码授权将报错。
执行历史保留多久?
执行历史存储在 Cloudflare D1 数据库中,当前无自动清理机制。如需手动清理,可通过 Cloudflare Dashboard 的 D1 控制台执行 SQL,或联系管理员。