系统软件环境

系统软件 版本
Jenkins 2.150.2
Slave Windows 10

问题描述

部分 Windows slave job 执行时间较长,日志分析发现不是Job脚本更新导致,而是因为Jenkins退出卡住。
日志分析:案例
具体任务在13:41就已经执行完成,但是Jenkins在13:51才退出返回结果。
也就是说整整卡住了10分钟,必须要解决。

原因分析

Jenkins 在 2.14 版本引入了 killSoftly 特性,出发点是想更加优雅的结束进程。
但是导致了 Windows slave上的 batch 脚本 执行完成 返回结果卡住(时间不确定)的情况。
Linux slave上的 shell 脚本执行退出没有发现此问题。

1
2
3
// Firstly try to kill the root process gracefully, then do a forcekill if it does not help (algorithm is described in JENKINS-17116)

killSoftly();

解决方法

可以通过 在Windows slave连接master机器的时候 增加 这个参数 -DSoftKillWaitSeconds=0 来解决。

1
2
3
# Run from agent command line:

java -Xrs -DSoftKillWaitSeconds=0 -jar agent.jar -jnlpUrl ...

使用上述命令重新连接 Master - Slave 后,可以在Slave系统信息界面看到参数生效了。
Slave信息

参考链接

https://issues.jenkins-ci.org/browse/JENKINS-55106
https://stackoverflow.com/questions/54039226/jenkins-hangs-between-build-and-post-build

Comment and share

背景:

公司目前使用Gerrit作为代码库托管和Code review平台。 使用Jenkins作为自动化构建和持续集成平台。

流程设计:

logo

  1. Dev本地开发,然后上传patch到gerrit:
  • 同时触发Jenkins CR_Job来做build
  • 增加Code reviewers来做review
  1. 再上述都成功的基础上,reviewer点击+2:
  • 同时触发Jenkins Submit_Job来做build和test:
    • 如果成功,自动合并本次patch到代码库
    • 如果失败,返回-1
  1. Nightly test Job:
  • 每晚20:00触发,获取当前最新的代码进行build和test

测试分级:

  • CR_Job:
    • 获取触发patch的代码,合并最新分支代码,进行build
    • 快速反馈,主要检查patch合并是否有冲突和build是否能跑通
  • Submit_Job:
    • 获取触发patch的代码,合并最新的分支代码,进行build和测试
    • 根据每天代码提交次数来确定时间和test cases
  • Nightly_Job:
    • 获取当前最新代码进行build和test
    • 一般跑12h,第二天早上出测试报告邮件

软件环境:

软件 版本
Jenkins 1.567
Gerrit 2.8.6
  • Jenkins插件:
插件名 版本 作用
Multijob plugin 2.11.1 定义pipeline
Gerrit Trigger 1.13 监控Gerrit event

搭建步骤:

  1. 安装配置Jenkins Gerrit Trigger插件:官方wiki
    logo
  2. 安装Jenkins Multijob plugin:官方wiki
    logo
  3. 配置CR_Job:
    logo
  4. 配置Submit_job:
    logo
  5. 配置Nightly_Job:
    logo

PS

  1. 以上内容都是基于公司研发现状定制的,建议各位根据自己的情况进行定制。
  2. 因为历史遗留原因,当前使用的版本比较旧。 例如如果升级到jenkins2.x版本的话pipeline就不需要借助插件来实现了。

Comment and share

Jenkins常用插件

in SCM

软件版本:

1
jenkins 1.567

Comment and share

  • page 1 of 1
Author's picture

Weilong

    Write something about work-life:

PM


Shenzhen