Jenkins踩坑job创建参数化定时构建及时区偏差问题解决
1)启动Jenkins后在首页点击开始创建一个新任务。
2)输入任务名称,选择自由风格,点击确定。
1)任意输入描述,然后勾选丢弃旧的构建,在保持构建的最大个数中输入3。
1)勾选参数化构建过程,选择添加字符参数
2)设置参数名称、默认值和描述
1)在构建触发器中勾选定时构建,日程表中输入H2,表示每两分钟构建一次。
1)在构建中选择执行shell,简单的执行一条打印语句,打印上面设置好的参数param;设置好之后保存即可。可以看到构建结果是每2分钟构建一次,且只保留最近的3次构建,参数param使用了默认值Jenkins。打开控制台输出可以看到执行的日志信息。如果想要修改参数值,选择BuildwithParameters,修改参数,点击开始构建即可。
在上述设置定时构建时,输入了一行命令H2来表示每隔2分钟构建一次,这是一种crontab的写法,具体描述分五个部分:星号():代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。逗号(,):可以用逗号隔开的值指定一个列表范围,例如,1,2,5,7,8,9。中杠():可以用整数之间的中杠表示一个整数范围,例如26表示2,3,4,5,6。正斜线():可以用正斜线指定时间的间隔频率,例如0232表示每两小时执行一次。同时正斜线可以和星号一起使用,例如10,如果用在minute字段,表示每十分钟执行一次。
但是实际在Jenkins中进行定时构建时,写法相似但是还是有区别,还是以上述的H2来表示每隔2分钟为例,当我们用2写法时:
可以看到Jenkins建议我们使用H来代表通配符,因此在表示每隔多久时建议使用H的方式。
另外,如果表示每天上午9点构建,如果使用09:
可以看到Jenkins建议我们使用H9的方式:
下面是一些常用定时方式的参考示例:
1。每30分钟构建一次:H30。
2。每2小时构建一次:HH2。
3。每天早上9点构建一次:H9。
4。每天8点、12点、21点各构建一次:H8,12,21。
5。周一至周五,每天22点到23点之间每隔3分钟构建一次:H3222315。
运行完毕后,会发现一个问题,构建的时间与我们实际的时间不一致:Jenkins显示时间系统实际时间
因为我们是用Docker部署的,所以再通过打印Docker容器的时间进行查看:
再进入系统管理系统信息user。timezone查看:
综上所述可以确定因为Jenkins容器使用的是UTC时间,和我们的北京时间差了正好8个小时,针对我们是Docker部署的,解决方法如下(其他直接在系统部署的可以另行百度)。
在Jenkins容器启动的时候添加参数
启动后再次查看系统管理系统信息user。timezone,发现时区已修改为上海:
查看构建历史,发现时间已于系统时间保持一致,修改完成:
来霍格沃兹测试开发学社,学习更多软件测试与测试开发的进阶技术,知识点涵盖web自动化测试app自动化测试、接口自动化测试、测试框架、性能测试、安全测试、持续集成持续交付DevOps,测试左移、测试右移、精准测试、测试平台开发、测试管理等内容,课程技术涵盖bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvmsandbox等相关技术,全面提升测试开发工程师的技术实力。
获取更多相关资料:请添加vx,ceshiren001
https:qrcode。ceba。ceshiren。comlink?namearticleprojectidqrcodefromtoutiaotimestamp1651112910