1、创建job
1)启动Jenkins后在首页点击"开始创建一个新任务"。
2)输入任务名称,选择自由风格,点击确定
2、构建保持配置
1) 任意输入描述,然后勾选"丢弃旧的构建",在"保持构建的最大个数中"输入3
由于Jenkins构建产生的日志等信息会保存在本机磁盘中,这样无限构建任务的话就会占用很多磁盘空间,因此可以在这里对旧的构建进行配置丢弃,可以选择以天数为条件,也可以选择保持的个数,这里就以保持3个构建数为例
3、参数化设置
1)勾选"参数化构建过程",选择添加"字符参数"
2)设置参数名称、默认值和描述
4、定时构建
1)在"构建触发器"中勾选"定时构建",日程表中输入H2/ * * * *
,表示每两分钟构建一次
5、Execute shell
1)在构建中选择执行shell
,简单的执行一条打印语句,打印上面设置好的参数param
;设置好之后保存即可
6、结果展示
- 可以看到构建结果是每2分钟构建一次,且只保留最近的3次构建,参数param
使用
了默认值Jenkins
- 打开控制台输出可以看到执行的日志信息
- 如果想要修改参数值,选择
Build with Parameters
,修改参数,点击开始构建
即可
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建议我们使用H
来代表通配符,因此在表示每隔多久时建议使用H/
的方式
另外,如果表示每天上午9点构建,如果使用0 9 * * *
:
可以看到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
- 1.每30分钟构建一次:
7.2 时间不一致
7.2.1 现象原因
运行完毕后,会发现一个问题,构建的时间与我们实际的时间不一致:
- 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容器使用的是UTC时间,和我们的北京时间差了正好8个小时,针对我们是docker部署的,解决方法如下(其他直接在系统部署的可以另行百度~):
7.2.2 解决方法
在Jenkins容器启动的时候添加参数
$ docker run ... -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai
启动后再次查看"系统管理"->"系统信息"->"user.timezone"
,发现时区已修改为上海:
查看构建历史,发现时间已于系统时间保持一致,修改完成: