Jenkins job 创建、参数化、定时构建及时区偏差问题

简介: 在Jenkins中创建新任务,步骤:设置任务名,选择自由风格,输入描述并配置丢弃旧构建的规则(保留最近3次)。接着,参数化构建过程,添加字符参数并设定其名称、默认值和描述。在构建触发器中,设定定时构建为每2分钟一次(H2/ * * * *)。在构建阶段执行Shell命令,打印参数param。构建结果显示每2分钟执行一次,保留最近3次构建,参数默认值为Jenkins。定时构建的cron语法详解,并给出常见定时构建示例。当遇到Jenkins显示时间与系统时间不一致(UTC时间差8小时)的问题,解决办法是在Docker启动时添加参数调整时区至上海,确认时区修改成功后,构建历史时间将与系统时间同步。

1)启动 Jenkins 后在首页点击"开始创建一个新任务"。
2)输入任务名称,选择自由风格,点击“确定”。
1) 任意输入描述,然后勾选"丢弃旧的构建", 在"保持构建的最大个数中"输入 3。
1)勾选"参数化构建过程",选择添加"字符参数"
2)设置参数名称、默认值和描述
1)在"构建触发器"中勾选"定时构建",日程表中输入H2/ ,表示每两分钟构建一次。
1)在构建中选择执行 shell,简单的执行一条打印语句,打印上面设置好的参数param;设置好之后保存即可。

  • 可以看到构建结果是每 2 分钟构建一次,且只保留最近的 3 次构建,参数 param使用了默认值Jenkins。
  • 打开控制台输出可以看到执行的日志信息。
  • 如果想要修改参数值,选择Build with Parameters,修改参数,点击开始构建即可。

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

  • 星号(*):代表所有可能的值,例如 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。
运行完毕后,会发现一个问题,构建的时间与我们实际的时间不一致:

  • Jenkins 显示时间

  • 系统实际时间
    因为我们是用 Docker 部署的,所以再通过打印 Docker 容器的时间进行查看:
    再进入"系统管理"->"系统信息"->"user.timezone"查看:
    综上所述可以确定因为 Jenkins 容器使用的是 UTC 时间,和我们的北京时间差了正好 8 个小时,针对我们是 Docker 部署的,解决方法如下 (其他直接在系统部署的可以另行百度~)。
    在 Jenkins 容器启动的时候添加参数
    启动后再次查看"系统管理"->"系统信息"->"user.timezone",发现时区已修改为上海:
    查看构建历史,发现时间已于系统时间保持一致,修改完成:

以上,欢迎大家一起交流探讨。

相关文章
|
4月前
|
jenkins Devops 机器人
【DevOps】(五)Jenkins构建给企业微信推送消息
【DevOps】(五)Jenkins构建给企业微信推送消息
183 1
|
12天前
|
Prometheus 监控 Cloud Native
使用 Jenkins 监控和优化构建性能
【8月更文第31天】在软件开发的过程中,构建性能直接影响着开发效率和团队的生产力。一个快速、可靠的构建流程可以显著加快迭代速度,减少等待时间,使团队能够更快地响应变化。Jenkins 作为一款广泛使用的持续集成/持续交付(CI/CD)工具,提供了丰富的功能来帮助开发者监控和优化构建性能。本文将探讨如何利用 Jenkins 的内置工具和外部工具来监控构建性能,并提出一些具体的优化方案。
42 0
|
29天前
|
jenkins 持续交付
Jenkins Pipeline 流水线 - Parameters 参数化构建
Jenkins Pipeline 流水线 - Parameters 参数化构建
44 0
|
29天前
|
jenkins 持续交付 网络安全
Jenkins Pipeline 流水线 - 完整构建 Pipeline Script 脚本
Jenkins Pipeline 流水线 - 完整构建 Pipeline Script 脚本
11 0
|
3月前
|
敏捷开发 jenkins 测试技术
阿里云云效产品使用问题之如何进行类似于jenkins那样参数化构建
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3月前
|
运维 算法 jenkins
做一个可通过jenkins定时任务Cron表达式设置的python定时函数
用python代码,来解析jenkins定时任务表达式,并获取最近的执行任务时间戳
|
2月前
|
Java jenkins 持续交付
Jenkins是开源CI/CD工具,用于自动化Java项目构建、测试和部署。通过配置源码管理、构建触发器、执行Maven目标,实现代码提交即触发构建和测试
【7月更文挑战第1天】Jenkins是开源CI/CD工具,用于自动化Java项目构建、测试和部署。通过配置源码管理、构建触发器、执行Maven目标,实现代码提交即触发构建和测试。成功后,Jenkins执行部署任务,发布到服务器或云环境。使用Jenkins能提升效率,保证软件质量,加速上线,并需维护其稳定运行。
93 0
|
3月前
|
Kubernetes Cloud Native jenkins
云原生时代:从Jenkins到Argo Workflows,构建高效CI Pipeline
基于Argo Workflows可以构建大规模、高效率、低成本的CI流水线
|
12天前
|
jenkins 持续交付 开发者
自动化部署:使用Jenkins和Docker实现持续集成与交付
【8月更文挑战第31天】本文旨在为读者揭示如何通过Jenkins和Docker实现自动化部署,从而加速软件开发流程。我们将从基础概念讲起,逐步深入到实际操作,确保即使是初学者也能跟上步伐。文章将提供详细的步骤说明和代码示例,帮助读者理解并应用这些工具来优化他们的工作流程。
|
11天前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
31 1