CronHub

定时任务管理平台

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

定时任务

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

执行历史

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

平台连接

API Keys

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

使用文档

目录
快速开始 定时任务 Cron 表达式 平台连接 GitHub Actions Workflow 可视化 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 * * *。

任务操作

  • 暂停 / 启用:点击任务行的「暂停」或「启用」按钮,立即生效,不影响历史记录。
  • 立即执行:点击「▶ 运行」可跳过等待,立即触发一次执行。
  • 编辑:修改任务配置后保存,下次执行时生效。
  • 删除:删除任务及其所有执行历史,不可恢复。

失败重试

新建或编辑任务时,可在「失败重试」区域配置自动重试策略:

配置项说明默认值
最大重试次数任务失败后最多自动重试的次数,0 表示不重试0(不重试)
重试间隔两次重试之间等待的秒数60 秒

重试记录会在「执行历史」中独立显示,标注「重试 N」或「待重试」,可追溯完整的重试链路。重试不会影响下一次正常调度时间。

建议:对于偶发性网络抖动导致失败的 HTTP 任务,可设置重试 2~3 次、间隔 30~60 秒;对于 GitHub Actions 任务,重试间隔建议不低于 60 秒。

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 账号,互不影响。系统会自动检测重复账号,同一 GitHub 用户不会被添加两次。

手动添加 Token

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

类型Token 来源所需权限
GitHubSettings → Developer settings → Personal access tokensrepo、workflow
CloudflareMy Profile → API TokensWorkers 读写权限
HTTP自定义 Bearer Token—

编辑平台连接

点击平台连接卡片上的「编辑」按钮,可以:

  • 修改名称:所有连接类型均可修改显示名称
  • 更换 Token:手动添加的连接可替换 Token(GitHub PAT 更换后会自动同步用户名和头像);OAuth 设备码连接的 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 }}

Workflow 可视化编辑器

Workflow 编辑器内置实时流程图,让 YAML 结构一目了然。点击右上角标签切换三种视图:

视图说明
代码纯 YAML 编辑区,全屏显示,适合大段编辑
分屏左侧 YAML 编辑,右侧实时渲染执行流程图(默认打开)
可视化全屏流程图,清晰展示触发器 → Job → Steps 完整结构

流程图元素说明

  • 触发器卡片:识别 schedule(⏰,展示 cron 表达式)、workflow_dispatch(🖱️ 手动)、push(📤)、pull_request(🔀)等类型
  • Job 容器:显示 Job 名称和 Runner 环境(如 ubuntu-latest)
  • 步骤列表:每个 Step 按顺序编号,区分 uses(引用 Action,紫色标签)和 run(执行命令,黄色标签)
实时更新:在 YAML 编辑区输入内容后 300ms 内,右侧流程图自动更新,无需手动点击刷新。步骤之间的空行、行内注释(#)、env: / with: 子块均不影响解析。

新建 Workflow 时的模板选择

点击「➕ 创建新 Workflow...」后,可从以下内置模板快速开始:

模板适用场景
HTTP 请求调用外部 API / Webhook,内置 curl 示例
Python 脚本运行 Python 任务,预置依赖安装步骤
Node.js 脚本运行 Node.js 任务,预置 npm install 步骤
空白模板从头编写,仅包含最基础的触发器配置

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获取平台连接列表
PATCH/api/platforms/:id修改平台连接名称或 Token
DELETE/api/platforms/:id删除平台连接

创建任务示例

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,或联系管理员。
失败重试和正常调度会冲突吗?
不会。重试是独立的执行记录,不影响任务的正常调度时间。例如任务每小时执行一次,第一次失败后安排 60 秒后重试,重试完成后下一次正常调度仍会在整点触发,两者互不干扰。重试记录在执行历史中会标注「重试 N」加以区分。
Workflow 可视化编辑器支持哪些语法?
支持标准 GitHub Actions YAML 结构,包括:
  • 触发器:schedule(含 cron 表达式)、workflow_dispatch、push、pull_request 等
  • Job 配置:runs-on、timeout-minutes 等属性
  • Steps:uses(引用 Action)、run(执行命令)、name(步骤名称)
  • 步骤内 env:、with: 子块(不影响流程图解析)
行内注释(# ...)会被自动忽略,步骤之间的空行不影响解析。
如何替换已连接 GitHub 账号的 Token?
OAuth 设备码连接的 Token 由授权流程统一管理,不支持手动替换。若 Token 失效,建议删除该连接后重新走一遍「Connect GitHub → 设备码授权」流程添加新连接。手动 PAT 连接可直接通过「编辑」按钮替换 Token。

新建任务

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

连接 GitHub 账号

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

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

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

添加平台连接

Azure DevOps 组织名,即 dev.azure.com/org-name

新建 API Key

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

新建 GitHub 仓库

Workflow 编辑器

YAML 源码
执行流程预览
在左侧输入 YAML,流程图将在这里实时显示
💡 修改 YAML,右侧实时更新

执行日志


    

Pipeline 预览

YAML 源码

      
执行流程预览
只读预览,如需修改请前往 Azure DevOps