CronHub

定时任务管理平台

CronHub
⏰ 定时任务 📋 执行历史 🔗 平台连接 🔑 API Keys 📖 使用文档

定时任务

名称 平台 Cron 状态 最后执行 下次执行 操作
加载中...

执行历史

任务 状态 开始时间 耗时 响应码 重试 日志
加载中...

平台连接

API Keys

名称 创建时间 最后使用 操作
加载中...

使用文档

目录
快速开始 定时任务 Cron 表达式 平台连接 GitHub Actions HTTP 任务 API 调用 常见问题

快速开始

CronHub 是一个运行在 Cloudflare Workers 上的定时任务管理平台,支持 GitHub Actions 触发和 HTTP 请求两种方式。

1
连接平台

前往「平台连接」,通过 GitHub OAuth 授权或手动填写 Token,添加一个平台连接。

2
新建任务

前往「定时任务」,点击「+ 新建任务」,填写任务名称、Cron 表达式、选择平台和目标仓库/接口。

3
查看执行

任务按计划自动执行,结果可在「执行历史」中查看,包含状态、耗时和响应日志。

定时任务

每个任务包含以下字段:

字段说明示例
名称任务的显示名称,便于识别每日数据同步
Cron触发时间规则,UTC 时区0 1 * * *
平台执行方式:GitHub Actions 或 HTTPGitHub 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 设备码)

  1. 点击「平台连接」页右上角 Connect GitHub
  2. 填写连接名称(如「个人账号」「公司账号」),点击「开始授权」
  3. 浏览器自动打开 github.com/login/device
  4. 在 GitHub 页面输入显示的 8 位验证码
  5. 授权完成后弹窗自动显示头像和用户名,点击「完成」
多账号:每次点击「Connect GitHub」都会发起独立的授权流程。在 GitHub 授权页切换到不同账号登录即可连接多个 GitHub 账号,互不影响。

手动添加 Token

点击「+ 其他连接」,选择平台类型并填写 Token:

类型Token 来源所需权限
GitHubSettings → Developer settings → Personal access tokensrepo、workflow
CloudflareMy Profile → API TokensWorkers 读写权限
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://)
MethodGET / POST / PUT / DELETE / PATCH
HeadersJSON 格式,如 {"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,或联系管理员。

新建任务

格式:分 时 日 月 周  |  当前:-
失败重试

连接 GitHub 账号

接下来会在 GitHub 完成授权,支持同时连接多个不同账号。

在 GitHub 输入以下验证码完成授权:

在 GitHub 授权
等待授权...  · 
✓ 连接成功

添加平台连接

新建 API Key

Key 已创建,请立即复制保存,之后不再显示:

新建 GitHub 仓库

创建 Workflow 文件

执行日志