Jenkins cron定时构建触发器

from: https://www.jenkins.io/doc/book/pipeline/syntax/#cron-syntax
以下内容为根据Jenkins官方文档cron表达式部分翻译过来,使用机翻加个人理解补充内容,包括举例。

目录

  • 介绍
  • 举例:
  • 设置方法
    • 方法一:
    • 方法二:
  • 其他举例
    • @yearly
    • @annually
    • @weekly
    • @daily
    • @midnight
    • @hourly
  • 一些问题:
    • jenkins中定时构建 在一个pipeline中可以同时设置daily 和weekly吗?可以每个定时器触发不同的stage,且可以daily只触发daily的stage吗?
    • triggers里能写两个cron表达式吗?
    • 一个pipeline能写两个triggers吗?
    • config中Build periodically定义cron和pipeline里triggers里的cron表达式都写,哪个会生效?
  • 拓展阅读:

介绍

Jenkins cron 语法遵循 cron 实用程序的语法(有细微差别)。具体来说,每行由 5 个由 TAB 或空格分隔的字段组成:
在这里插入图片描述

分钟 小时 日 月 一周中的第几日
要为一个字段指定多个值,可以使用以下运算符。按照优先顺序,
*指定所有有效值
M-N 指定一个值范围
M-N/X*/XX 为间隔步进通过指定范围或整个有效范围
A,B,...,Z 枚举多个值
H 表示有效值范围内任意一个时间点

为了允许定期调度的任务在系统上产生均匀的负载,应尽可能使用符号 H(“哈希”)。例如,对十几个日常Job使用 0 0 * * * 将导致午夜出现大幅峰值。相比之下,使用 H H * * * 仍会每天执行每个Job一次,但不是同时执行所有Job,更好地利用有限的资源。
H 符号可以与范围一起使用。例如,H H(0-7) * * * 表示 12:00 AM(午夜)到 7:59 AM 之间的某个时间。您还可以将步长间隔与H一起使用,带或不带范围。
H 符号可以被认为是一定范围内的随机值,但它实际上是Job名称的哈希值,而不是随机函数,因此该值对于任何给定项目都保持稳定。
请注意,对于月份字段,由于月份长度可变,*/3 H/3 等短周期在大多数月末附近不会一致工作。例如,*/3 将在长月的第 1 天、第 4 天、…第 31 天运行,然后在下个月的第二天运行。哈希值始终选择在 1-28 范围内,因此 H/3 将在月底的运行之间产生 3 到 6 天的间隙。较长的周期也会有不一致的长度,但效果可能相对不太明显。

空行和以 # 开头的行将作为注释被忽略。 此外,还支持@yearly@annually@monthly@weekly@daily@midnight @hourly 作为方便的别名。它们使用哈希系统进行自动平衡。例如,@hourlyH * * * * 相同,可以表示一小时内的任何时间。 @midnight 实际上是指 12:00 AM 到 2:59 AM 之间的某个时间。

举例:

每十五分钟一次 (perhaps at :07, :22, :37, :52)
triggers{ cron('H/15 * * * *') }
每半个小时,隔十分钟一次 (three times, perhaps at :04, :14, :24)
triggers{ cron('H(0-29)/10 * * * *') }
周一到周五从上午九点到下午四点,每隔两个小时,在45分钟的时候运行一次,即每个工作日从上午 9:45 开始到下午 3:45 结束,每两小时一次。
triggers{ cron('45 9-16/2 * * 1-5') }
每个工作日上午 9 点到下午 5 点之间每两小时一次(可能是上午 10:38、中午 12:38、下午 2:38、下午 4:38)
triggers{ cron('H H(9-16)/2 * * 1-5') }
除12月外,每月1日和15日每天一次
triggers{ cron('H H 1,15 1-11 *') }

设置方法

方法一:

在Jenkins中,可以在config界面配置:
注: 第一位必须要是 H
比如 H H * * 1'表示 每周一任意时间执行一次
在这里插入图片描述
填写完Schedule 可查看下方的提示确认触发时间。(可用这种方式进行调试)

方法二:

cron表达式写到pipeline中(推荐)

pipeline {agent anytriggers {cron('0 12 * * 1') // 每周一的12点触发任务}stages {stage('Build') {steps {// 构建任务的步骤}}}
}

其他举例

# Would last have run at Monday, March 11, 2024 11:36:08 AM CST; would next run at Monday, March 11, 2024 11:38:08 AM CST.
# 周一,每两分钟执行一次
H/2 * * * 1# Would last have run at Monday, March 11, 2024 10:47:25 AM CST; would next run at Monday, March 11, 2024 12:47:25 PM CST.
# 周一,每两小时执行一次
H */2 * * 1  或者 H H/2 * * 1# 每天的晚上11点运行
pipline {triggers {cron('H 23 * * *')}
}# 每天的凌晨00:01分运行,第一位数值不能设置为*
pipline {triggers {cron('01 00 * * *') #此配置表示凌晨00:01自动触发}
}

@yearly

在这里插入图片描述

@annually

在这里插入图片描述

@weekly

在这里插入图片描述

@daily

在这里插入图片描述

@midnight

在这里插入图片描述

@hourly

在这里插入图片描述

一些问题:

jenkins中定时构建 在一个pipeline中可以同时设置daily 和weekly吗?可以每个定时器触发不同的stage,且可以daily只触发daily的stage吗?

好像不行,试过很多种方法,暂时没有实现。如果有什么好的方法,欢迎留言一起讨论。
目前实现daily,weekly,方法是拆分成两个pipeline,一个cron表达式控制一个job。

triggers里能写两个cron表达式吗?

不行,会报错

pipeline {agent anytriggers {cron('19 13 * * *') cron('20 13 * * *')}stages {stage('Build') {steps {echo "aa"}}}
}

报错截图:
在这里插入图片描述

一个pipeline能写两个triggers吗?

不能,会报错

pipeline {agent anytriggers {cron('23 13 * * *')}triggers {cron('22 13 * * *')}stages {stage('Build') {steps {echo "aa"}}}
}

报错截图:
在这里插入图片描述

config中Build periodically定义cron和pipeline里triggers里的cron表达式都写,哪个会生效?

在Jenkins中,如果config中的Build periodically定义了cron表达式,同时在pipeline脚本中的triggers部分也定义了cron表达式,那么以pipeline脚本中定义的cron表达式为准,即pipeline中定义的cron表达式会生效。因此,当pipeline中定义了cron触发器时,会忽略config中的Build periodically定义的cron表达式。

拓展阅读:

详细cron表达式的用法可以参考:
https://tool.lu/crontab
https://blog.csdn.net/u011441473/article/details/80902472

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/746338.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3.2_1 虚拟内存的基本概念

3.2_1 虚拟内存的基本概念 虚拟存储技术也是存储空间扩充的一种技术,它比交换、覆盖技术要更先进一些。 (一)传统存储管理方式的特征、缺点 对于这种传统的存储管理方案,很多暂时用不到的数据也会长期占用内存,导致内存…

【数据结构和算法初阶(C语言)】栈的概念和实现(后进先出---后来者居上的神奇线性结构带来的惊喜体验)

目录 1.栈 1.1栈的概念及结构 2.栈的实现 3.栈结构对数据的处理方式 3.1对栈进行初始化 3.2 从栈顶添加元素 3.3 打印栈元素 3.4移除栈顶元素 3.5获取栈顶元素 3.6获取栈中的有效个数 3.7 判断链表是否为空 3.9 销毁栈空间 4.结语及整个源码 1.栈 1.1栈的概念及结构 栈&am…

高压辊磨机(辊压机)在矿物加工领域应用广泛 目前本土企业处于向高端转型阶段

高压辊磨机(辊压机)在矿物加工领域应用广泛 目前本土企业处于向高端转型阶段 高压辊磨机又称为辊压机、挤压磨,是基于料层粉碎原理设计的一种干式辊磨设备。高压辊磨机结构形式多样,但原理基本相似,主要由机架、高压工…

浅谈C++绑定器bind1st、bind2nd和函数对象function

今天我们先来谈谈C 标准库里面的绑定器bind1st,bind2nd 和函数对象function C 绑定器和函数对象 一、绑定器二、函数对象 一、绑定器 虽然在C11标准中这两个绑定函数已经被弃用,但仍然值得我们深入思考其底层原理。从字面上理解,“绑定” 这…

Explain

Explain EXPLAIN是MySQL提供的一种用于分析SQL查询执行计划的工具,通过它我们可以深入了解数据库如何执行一条SQL语句,以及优化器在选择索引、访问表和排序数据等方面的决策。 我整理了一份思维导图方便更好查看各个参数的意义,红色表示比较…

RabbitMq踩坑记录

1、连接报错:Broker not available; cannot force queue declarations during start: java.io.IOException 2.1、原因:端口不对 2.2、解决方案: 检查你的连接配置,很可能是你的yml里面的端口配置的是15672,更改为5672即…

css超出部分显示省略号

目录 前言 一、CSS单行实现 二、CSS多行实现(CSS3出的,兼容性需要注意) 三、微信小程序超过2行出现省略号实现 四、JavaScript脚本实现 前言 CSS文本溢出就显示省略号,就是在样式中指定了盒子的宽度与高度,有可能出现某些内…

LLM - 大语言模型(LLM) 概述

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/136617643 大语言模型(LLM, Large Language Model)的发展和应用是一个非常广泛的领域,涉及从早期的统计模型到现代基于深度学…

【AI+CAD】(二)LLM和VLM生成结构化数据结构(PPT/CAD/DXF)

当前LLM和VLM在PPT生成任务上已经小有成效,如ChatPPT。 @TOC 1. PPT-LLM LLM根据用户的instruction生成规范的绘制ppt的API语句:即使是最强的GPT-4 + CoT也只能达到20-30%的内容准确度。 LLM输入:User_instruction(当前+过去)、PPT_content、PPT_reader_API。其中 PPT_rea…

面试经典150题——随机链表的复制

​前两天断更了两天有点事情🤗 1. 题目描述 2. 题目分析与解析 2.1 思路一 开始还是没什么思路,没思路那就先把题目解决不管方法的好坏。如果不考虑复杂度,该怎么解决? 可以有这样的一种思路: 首先复制链表的所有节…

【python绘图】turle 绘图基本案例

文章目录 0. 基础知识1. 蟒蛇绘制2. 正方形绘制3. 六边形绘制4. 叠边形绘制5. 风轮绘制 0. 基础知识 资料来自中国mooc北京理工大学python课程 1. 蟒蛇绘制 import turtle turtle.setup(650, 350, 200, 200) turtle.penup() turtle.fd(-250) turtle.pendown() turtle.pen…

jeesite列表jqGrid表格底部汇总,基于onSelectRow和onSelectAll实现选中行汇总合计

一、最终效果图 二、表格启用复选框并初始化赋值 onSelectAll: function() { calc_sum(); }, onSelectRow: function() { calc_sum(); },// 加载成功后执行事件 ajaxSuccess: function(data){var dy = 0;var glbzqmrsdtyg = 0;var glbzqmrsschyg = 0;var glbzqmrsqtcy …

【贪心算法】Leetcode 55. 跳跃游戏

【贪心算法】Leetcode 55. 跳跃游戏 解法1解法2 ---------------🎈🎈55. 跳跃游戏 题目链接🎈🎈------------------- 解法1 关键点在于:不用拘泥于每次究竟跳几步,而是看覆盖范围,覆盖范围内…

Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法

前言: 本篇博客超级详细,请尽量使用电脑端结合目录阅读 阅读时请打开右侧 “只看目录” 方便阅读 一、什么是Python 1.1 Python的诞生 1989年,为了打发圣诞节假期,Gudio van Rossum吉多 范罗苏姆(龟叔)决…

Gitee配置SSH登录

一、背景 新入手的电脑,需要对Gitee上存放的项目进行更改上传,发现上传不了需要登录,便采用SSH密钥进行登录,防止远程管理工程中的信息泄露 二、前提 电脑已下载Git Bash工具,在项目下点击鼠标右键,进入…

Linux 中搭建 主从dns域名解析服务器

CSDN 成就一亿技术人! 作者主页:点击! Linux专栏:点击! CSDN 成就一亿技术人! ————前言———— 主从(Master-Slave)DNS架构是一种用于提高DNS系统可靠性和性能的配置方式。…

opencv人脸识别实战3:多线程和GUI界面设计(PyCharm实现)

一、多线程设计 1、在一个新线程中调用了 scan_face() 函数来进行人脸识别操作。根据识别结果,更新界面显示结果,最后释放资源。 def f_scan_face_thread():var.set(刷脸)ans scan_face()if ans 0:print("最终结果:无法识别")va…

《互联网的世界》第七讲-能源

本想聊聊 tcp 和 quic,但这些都属于术的范畴,变化多端,等孩子们长大了又不知变成什么样子了,趁这段时间在家,还是得讲一些相对不变的东西,或法或势。 从 安阳卖血糕的精巧篦子 想到如何做圆米粉和圆面条&a…

【管理咨询宝藏39】某四大咨询公司D记PPT模板

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏39】某四大咨询公司D记PPT模板 【格式】PPT版本,可编辑, 【关键词】PPT模板,PPT图表 【文件核心观点】 - 2…

什么是分段锁?

1、典型回答 分段锁是一种将锁细化到每个段(Segment) 级别的锁设计。在 ConcurrentHashMap 中,它将整个数据结构分成多个段,每个段只锁定自己的一部分数据。每个段可以看作是一个独立的分组,只锁定该段(Segment)内部的数据操作,不…