Cron / 调度规则

Jenkins Cron 表达式 · 看懂哈希窗口,再安排构建

生成并检查一条核心表达式,查看 H 候选范围与对应的流水线片段。

Jenkins Cron 表达式

表达式

输入仅在当前浏览器中处理,不会发送到服务器。

解析报告与流水线片段

选项

字段构建器

这里的字段仅是草稿;点击应用才替换上方表达式,粘贴的原文始终是校验依据。

H/15 * * * *

分钟 0–59,小时 0–23,日期 1–31,月份 1–12,星期 0–7。支持数字列表、范围、*/步长、范围/步长或 H;不支持裸数字/步长。

输入或选项已更改,请更新结果后再导出。

Jenkins Cron 表达式看起来和普通定时任务相似,但 H、日期与星期的组合、月度别名都有自己的规则。接手旧任务时,先弄清哪些值已经固定、哪些还取决于任务哈希,才能判断一次改动会怎样影响构建。

用五字段草稿生成 Jenkins 定时构建配置,也可粘贴已有 Jenkins 定时任务逐项检查。报告把 Jenkins H 哈希的候选起点和字段范围分开,避免将“某个稳定分钟”误读成“每分钟”。

为什么使用这份 Jenkins Cron 表达式工作台

区分固定整刻与哈希偏移

这份 Jenkins Cron 表达式工作台会明确列出 */15 对应的 0、15、30、45 分钟,以及 H/15 的 0–14 候选起点。后者再按 15 递增;候选值只是可能性,并不代表当前任务已经选定的分钟。

上下两条时间轴分别展示固定对齐的四个标记与整体偏移的四个等距标记。

让步长停在指定范围内

H(0-29)/10 从 0–9 中选择起点,只在每小时的前半段按 10 递增。报告同时保留起点区间和结束边界,因此不会让你以为运行点会一直延伸到第 59 分钟。

时间轴仅前半段高亮,三个等距标记全部位于窗口内,后半段没有标记。

先核对草稿和上下文,再替换原表达式

01

用预览控制写回

选择预设只会更新下方草稿。生成预览后,可对照新旧表达式及字符数量,点击应用才写回输入;撤销会同时恢复原输入、参数与结果,不必重新拼装之前的配置。

02

任务全名只是报告注记

可以记录包含文件夹路径的任务全名,方便日后核对配置。填入名称不会启用哈希计算,也不会出现该任务的具体下次时间;结果里的起点区间始终只是候选范围。

03

分清构建与代码轮询

定时构建选择 cron,检查仓库变更选择 pollSCM。默认停顿 350 毫秒后分析,关闭自动后可按 Ctrl/Cmd + Enter 手动执行。输入或已应用参数一变,复制和下载会暂时禁用。

逐项解释调度条件,保留原始意图

五个数字字段

按分钟、小时、日期、月份、星期解析,支持列表、包含端点的范围,以及范围或星号的步长。数字列表去重;结果中的星期 7 归并为周日 0,原始表达式中的写法仍会保留。

每个 H 项单独说明

列表中的多个哈希项分别显示,不会被合成“每个候选分钟都执行”。例如 H(10-20)/4 的起点是 10–13,不同起点可能产生不同数量的值,报告不会武断地认定始终执行三次。

按核心默认行为展开别名

七种别名都可直接输入,包括 @annually。@monthly 默认展开为 H H H * *,日期同样来自哈希;@midnight 展开为 H H(0-2) * * *,并不等于固定的午夜零点。

表达式和流水线片段分别导出

可单独复制表达式,或复制 cron / pollSCM 的 triggers 片段。下载的文本报告包含字段条件、触发器选择和任务注记,便于审查;自由输入的任务名称不会被拼进可执行代码。

支持范围与实际运行之间的边界

不解算任务的精确时刻
本工具不复刻 Jenkins 的 Java 随机序列、多行计划共享的哈希状态、时区数据库或管理员对别名哈希的改动。有无任务全名都只给候选范围,精确计划时间应在对应 Jenkins 实例中确认。
只接收一条核心表达式
输入限 512 个 UTF-16 单元,任务全名限 1024 个。只支持五字段或列出的别名;不接收秒、年、JAN / MON、?、L、W、#、裸数字步长 5/15、TZ= 头、多行、注释、命令或整个 Jenkinsfile。
日历条件不是固定时长
日期与星期必须同时满足。2 月 31 日可以通过字段语法检查,却不存在实际日期。裸日期 H 限在 1–28,显式 H(29-31) 则可能选到短月没有的日期;按日步进跨月也不保证等间隔。
哈希步长有自己的规则
H/1 与 H 一样只选一个值,每个值都要匹配应写 */1。大于 1 的哈希步长不能超过所选范围长度。哈希有助于分散任务,但不保证任务之间绝不重合;本页面不会连接 Jenkins、创建任务或触发构建。

Jenkins Cron 表达式常见问题

H/5 到底是什么意思?

放在分钟字段时,它先从 0–4 中确定一个稳定起点,再在每小时内按 5 递增。H/5 3,21 * * 1-5 会在工作日的 3 点和 21 点这两个小时中使用该节拍,并非只在五分钟内执行一次。H/1 则属于只选单值的特殊情况。

如何在 Jenkins 中安排定时任务?

在任务配置里启用定期构建,或将生成的 triggers 块放入声明式流水线。cron 到时会触发构建,不要求源代码发生变化。本页面只准备配置文字,实际是否加载计划、是否有可用执行器仍由 Jenkins 决定。

Jenkins 可以为任务设置不同时区吗?

完整的核心触发器配置支持独立的 TZ= 行,时区名称取决于 Java 运行时。未设置时使用控制器时区。本工作台只处理单条表达式,因此不导入时区头,也不会拿浏览器时区替你推算执行时间。

轮询代码库和定期构建有什么区别?

Poll SCM 周期性检查代码变更,仓库检测到变化后才发起构建;定期构建则不以代码变化为前提。两者使用相同的表达式语法,但做的事情不同。生成轮询片段时选择 pollSCM,并在 Jenkins 中核对具体仓库的轮询行为。

怎样让任务在每个月最后一天执行?

核心语法没有表示月末的 L。可以另行采用每日运行后检查日期的任务逻辑,或选用合适的定时插件。@monthly 的默认日期是 1–28 中的哈希值,不代表月末;本工具会拒绝 L,不会擅自生成一个近似替代计划。

执行时间不符合预期?

带着上下文核对构建计划

用这份 Jenkins Cron 表达式工作台确认字段窗口,再将触发器片段放入自己的配置。在依赖某个具体时刻之前,请查看目标控制器的计划预览。

语法通过不代表构建一定按时开始或执行成功。