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 any
    triggers {
        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 any
    triggers {
        cron('19 13 * * *') 
        cron('20 13 * * *')
    }
    stages {
        stage('Build') {
            steps {
                echo "aa"
            }
        }
    }
}

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

一个pipeline能写两个triggers吗?

不能,会报错

pipeline {
    agent any
    triggers {
        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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

web | http 的一些问题 | get/post的区别 | http版本 | http与https的区别 | session、cookie、token

怎么来说呢?这应该算一个大类了,基本上设计网络的应用层 当然重要的是从网络层----->应用层 (杠精勿杠,知道中间还有其他层) 先来讲一下http的结构 都知道http 有三部分,头部、请求头和body 头部&#x…

SQLiteC/C++接口简介

上一篇:SQLite——世界上部署最广泛的开源数据库(简介) 下一篇:SQLiteC/C接口详细介绍(一) 引言: 作为一种轻量级、嵌入式关系型数据库,SQLite已经成为许多应用和系统的首选解决方…

Discord OAuth2授权以及机器人监听群事件

下面文章讲解获取OAuth2授权整个流程,创建机器人,使用机器人监听工会(工会就是创建的服务器)成员变化等等,对接国外的都是需要VPN的哦,对接的时候记得提前准备。 创建应用 点击 此页面添加应用,&#xff…

使用kettle批量加载数据到kadb

测试环境 达梦数据库版本:DM Database Server 64 V8 03134284132-20240115-215128-20081(官网测试版)KADB版本:KADB V003R002C001B0181Kettle版本:pdi-ce-9.4.0.0-343(官网下载)Python版本&…

解释“RNN encode-decode”

“RNN encode-decode” 涉及使用循环神经网络(Recurrent Neural Network,RNN)来执行编码和解码操作。这种结构常用于处理序列数据,例如自然语言处理、语音识别和时间序列预测等任务。 以下是 “RNN encode-decode” 的一般概念&a…

Flink实操:Flink SQL实现SFTP文件读写操作

一、背景 公司需要将Doris数据库中的部分表数据同步至SFTP服务器,以供其他合作企业安全读取和使用。目前,平台数据同步功能统一使用Flink引擎进行实时同步、离线同步的工作。因此,希望能够充分利用现有的Flink引擎,并将其复用于这…

四 超级数据查看器 讲解稿 列表功能1

四 超级数据查看器 讲解稿 列表功能1 点击此处 以新页面 打开B站 播放教学视频 APP下载地址 百度手机助手 下载地址4 讲解稿全文: 大家好,今天我们讲解一下,超级数据查看器列表界面,分为1-2两集。 首先&#xff0c…

ChatGPT+MATLAB应用

MatGPT是一个由chatGPT类支持的MATLAB应用程序,由官方Toshiaki Takeuchi开发,允许您轻松访问OpenAI提供的chatGPT API。作为官方发布的内容,可靠性较高,而且也是完全免费开源的,全程自己配置,无需注册码或用…

MySQL的加锁规则

学习了MySQL的锁后,知道其有这么多锁,那应该会有些疑惑,这么多锁,究竟我在写sql语句时候用到哪个锁的,什么情况是用什么锁的?在哪里查看该sql语句是用了哪些锁的呢?加锁的规则是什么呢&#xff…

【C++初阶】第六站 : 模板初阶

前言: 本章知识点:泛型编程、函数模板、类模板 专栏: C初阶 目录 泛型编程 函数模板 1.函数模板概念 2.函数模板格式 3.函数模板的原理 4.函数模板的实例化 5.模板参数的匹配原则 类模板 类模板的定义格式 类模板的实例化 泛型编程 如何实现一…

Redis 的基本全局命令

前言 Redis 常用的有 5 种数据结构,字符串,列表,哈希表,集合,有序集合,每一种数据结构都有自己独特的命令,但也有些通用的全局命令,本文所提到的是最基本的命令,Redis 的…

linux查看文件内容cat,less,vi,vim

学习记录 目录 catlessvi vim cat 输出 FILE 文件的全部内容 $ cat [OPTION] FILE示例 输出 file.txt 的全部内容 $ cat file.txt查看 file1.txt 与 file2.txt 连接后的内容 $ cat file1.txt file2.txt为什么名字叫 cat? 当然和猫咪没有关系。 cat 这里是 co…

使用 IDEA 将本地jar上传到本地maven仓库

IDEA中的操作步骤 创建一个 Maven 运行配置 在开发工具的导航栏中,点击选择配置: 在配置界面点击左上角的加号,随后选择增加一个maven运行配置: 编辑 Maven 配置 上图中的含义: Name 对应的是本配置的名字、用处或功…

PyTorch搭建AlexNet训练集

本次项目是使用AlexNet实现5种花类的识别。 训练集搭建与LeNet大致代码差不多,但是也有许多新的内容和知识点。 1.导包,不必多说。 import torch import torch.nn as nn from torchvision import transforms, datasets, utils import matplotlib as p…

NFTScan | 03.04~03.10 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期:2024.03.04~ 2024.03.10 NFT Hot News 01/ 数据:比特币链上 NFT 过去 24 小时销售额超 3100 万美元 3 月 4 日,据数据显示,比特币链上 NFT 过去 24 小…

设计模式十:原型模式

文章目录 1、原型模式1.1 类创建过程1.2 浅拷贝1.3 深拷贝 2、示例2.1 简单形式2.2 复杂形式 3、spring中的原型模式3.1 ArrayList的原型模式3.2 spring中的原型模式 1、原型模式 原型模式就是从一个对象再创建另外一个可定制的对象, 而且不需要知道任何创建的细节。…

Vscode+QT+Python

参考链接:VSCodePyQt之Python界面编写_vscode编写图形化界面-CSDN博客 1.安装库 pip install PyQt5 pip install PyQt5-tools pip install qt5_applications 2.在VSCode里下载并安装PYQT Integration 3.配置pyqt integration 4.打开qt designer 在工程文件的空白…

python自动化之pytest框架以及数据驱动(第五天)

1.pytest框架需要遵循的规则 (1).py 测试文件必须以test 开头(或者以 test结尾) (2)测试类必须以Test开头,并且不能有 init 方法 (3)测试方法必须以test 开头 (4)断言…

分享个好用的GPT网站

目录 一、背景 二、功能描述 1、写代码 2、联网查询 3、AI绘图 一、背景 我现在的开发工作都依靠ChatGPT,效率提升了好几倍。这样一来,我有更多时间来摸鱼,真是嘎嘎香~ ⭐⭐⭐点击直达 ⭐⭐⭐ 二、功能描述 1、写代码 import java.ut…