欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

jenkins定时构建时间设置(图解jenkins如何创建定时任务)

程序员文章站 2023-11-24 10:18:04
1、创建 job1)启动 jenkins 后在首页点击”开始创建一个新任务”。2)输入任务名称,选择*风格,点击“确定”。2、构建保持配置1) 任意输入描述,然后勾选R...

1、创建 job

1)启动 jenkins 后在首页点击”开始创建一个新任务”。

jenkins定时构建时间设置(图解jenkins如何创建定时任务)

2)输入任务名称,选择*风格,点击“确定”。

jenkins定时构建时间设置(图解jenkins如何创建定时任务)

2、构建保持配置

1) 任意输入描述,然后勾选”丢弃旧的构建”, 在”保持构建的最大个数中”输入 3。

由于 jenkins 构建产生的日志等信息会保存在本机磁盘中,这样无限构建任务的话就会占用很多磁盘空间,因此可以在这里对旧的构建进行配置丢弃,可以选择以天数为条件,也可以选择保持的个数,这里就以保持 3 个构建数为例。

jenkins定时构建时间设置(图解jenkins如何创建定时任务)

3、参数化设置

1)勾选”参数化构建过程”,选择添加”字符参数”

jenkins定时构建时间设置(图解jenkins如何创建定时任务)

2)设置参数名称、默认值和描述

jenkins定时构建时间设置(图解jenkins如何创建定时任务)

4、定时构建

1)在”构建触发器”中勾选”定时构建”,日程表中输入h2/ * * * *,表示每两分钟构建一次。

jenkins定时构建时间设置(图解jenkins如何创建定时任务)

5、execute shell

1)在构建中选择执行 shell,简单的执行一条打印语句,打印上面设置好的参数param;设置好之后保存即可。

jenkins定时构建时间设置(图解jenkins如何创建定时任务)

6、结果展示

  • 可以看到构建结果是每 2 分钟构建一次,且只保留最近的 3 次构建,参数 param使用了默认值jenkins。
jenkins定时构建时间设置(图解jenkins如何创建定时任务)
  • 打开控制台输出可以看到执行的日志信息。
jenkins定时构建时间设置(图解jenkins如何创建定时任务)
  • 如果想要修改参数值,选择build with parameters,修改参数,点击开始构建即可。
jenkins定时构建时间设置(图解jenkins如何创建定时任务)
jenkins定时构建时间设置(图解jenkins如何创建定时任务)

7、补充说明

7.1 定时构建时间描述

在上述设置定时构建时,输入了一行命令h2/ * * * *来表示每隔 2 分钟构建一次,这是一种crontab的写法,具体描述分五个部分:

分钟 小时 日期 月份 星期几
*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 7) (星期天 为 0 或 7)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)
  • 星号(*):代表所有可能的值,例如 month 字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
  • 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”。
  • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如 “2-6” 表示 “2,3,4,5,6”。
  • 正斜线(/):可以用正斜线指定时间的间隔频率,例如 “0-23/2” 表示每两小时执行一次。同时正斜线可以和星号一起使用,例如 */10,如果用在 minute 字段,表示每十分钟执行一次。

但是实际在 jenkins 中进行定时构建时,写法相似但是还是有区别,还是以上述的h2/ * * * *来表示每隔 2 分钟为例,当我们用*/2 * * * *写法时:

jenkins定时构建时间设置(图解jenkins如何创建定时任务)

可以看到 jenkins 建议我们使用h来代表通配符,因此在表示每隔多久时建议使用h/的方式。

另外,如果表示每天上午 9 点构建,如果使用0 9 * * *:

jenkins定时构建时间设置(图解jenkins如何创建定时任务)

可以看到 jenkins 建议我们使用h 9 * * *的方式:

下面是一些常用定时方式的参考示例:

  1. 每 30 分钟构建一次:h/30 * * * *。
  2. 每 2 小时构建一次:h h/2 * * *。
  3. 每天早上 9 点构建一次:h 9 * * *。
  4. 每天 8 点、12 点、21 点各构建一次:h 8,12,21 * * *。
  5. 周一至周五,每天 22 点到 23 点之间每隔 3 分钟构建一次:h/3 22-23 * * 1-5。

7.2 时间不一致

7.2.1 现象原因

运行完毕后,会发现一个问题,构建的时间与我们实际的时间不一致:

  • jenkins 显示时间
jenkins定时构建时间设置(图解jenkins如何创建定时任务)
jenkins定时构建时间设置(图解jenkins如何创建定时任务)
  • 系统实际时间
jenkins定时构建时间设置(图解jenkins如何创建定时任务)

因为我们是用 docker 部署的,所以再通过打印 docker 容器的时间进行查看:

jenkins@0520b8208ffb:/$ date
fri apr 10 01:35:30 utc 2020
jenkins@0520b8208ffb:/$ exit
exit
xxxdemacbook-pro:jenkins_home xxx$ date
2020 年 4 月 10 日 星期五 09 时 35 分 35 秒 cst

再进入”系统管理”->”系统信息”->”user.timezone”查看:

jenkins定时构建时间设置(图解jenkins如何创建定时任务)

综上所述可以确定因为 jenkins 容器使用的是 utc 时间,和我们的北京时间差了正好 8 个小时,针对我们是 docker 部署的,解决方法如下 (其他直接在系统部署的可以另行百度~)。

7.2.2 解决方法

在 jenkins 容器启动的时候添加参数

$ docker run ... -e java_opts=-duser.timezone=asia/shanghai

启动后再次查看”系统管理”->”系统信息”->”user.timezone”,发现时区已修改为上海:

jenkins定时构建时间设置(图解jenkins如何创建定时任务)

查看构建历史,发现时间已于系统时间保持一致,修改完成:

jenkins定时构建时间设置(图解jenkins如何创建定时任务)