当前位置: 首页 > 面试题库 >

Jenkins在构建和构建后之间徘徊

司空俊雄
2023-03-14
问题内容

在将Jenkins更新到2.156版(从1.6版开始)之后,我们的一些构建作业在完成后以及移至构建后动作之前会卡住。作业本身在5分钟内完成(与之前相同),然后挂起5-10分钟再继续。

我设法将其缩小为:

"Executor #10 for master : executing 03_masa #4390" Id=34464 Group=main TIMED_WAITING
    at java.lang.Thread.sleep(Native Method)
    at hudson.util.ProcessTree$WindowsOSProcess.killSoftly(ProcessTree.java:560)
    at hudson.util.ProcessTree$WindowsOSProcess.killRecursively(ProcessTree.java:520)
    at hudson.util.ProcessTree$Windows.killAll(ProcessTree.java:666)
    at hudson.Launcher$LocalLauncher.kill(Launcher.java:955)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:510)
    at hudson.model.Run.execute(Run.java:1810)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
    at hudson.model.ResourceController.execute(ResourceController.java:97)
    at hudson.model.Executor.run(Executor.java:429)

可以在此处找到引用的代码(自2.141版本开始提供)。

threadDump#1,threadDump#2

我们可以做些什么吗?


问题答案:

2.141引入了2分钟的进程终止等待时间(似乎与在构建期间创建的进程数量一样多)

https://github.com/jenkinsci/jenkins/commit/d8eac92ee9a1c19bf145763589f1c152607bf3ed

不确定为什么killSoftly不起作用,但是您可以配置超时

您可以在jenkins.xml中将其添加到/service/arguments元素中(在-jar之前),如下所示:

-DSoftKillWaitSeconds=0

这样做并重新启动jenkins之后,您应该能够在下面找到您的SoftKillWaitSeconds设置 /systemInfo

并且您的构建时间应该恢复正常



 类似资料:
  • 问题内容: 我是Jenkins / Hudson的新手,正在尝试从buildbot迁移基于C make的项目。由于遗留原因,构建系统被硬编码以在版本控制的源代码树(git)之外(在上面的一个目录中)在单独的目录中进行构建。例如: 除了最终在工作空间之外创建目录这一事实外,Jenkins不会识别上面build /目录中的项目以将其归档为工件。 如何使这种构建系统与Hudson一起使用?在源代码树中构

  • 问题内容: 我想用詹金斯建立一个Maven项目。但是,只有在SVN储存库中的某个文件已更改(并且包含特殊密钥)的情况下,才必须构建项目。 所以我的计划是创建一个包含两个构建步骤的工作: 第一步是执行检查该“条件”的shell或python脚本。 第二步是实际的Maven构建 仅当步骤1中的条件检查返回“ true”时,才必须调用第二步。 有可能这样做吗?好吧,我想如果不满足条件,我可以在第一个脚本

  • 问题内容: 当它成功时,我正在尝试在Jenkins CI中进行构建后提交。 有没有办法做到这一点? 我的问题是,当我构建它时,我需要在工作区中生成一些dll提交给svn。 问题答案: 这取决于您用来构建源代码的构建技术(例如Ant,Maven,MSBuild或FianlBuilder)。要将生成结果检入到svn中,应在生成脚本的末尾添加一些新步骤。这一步只会将您的构建结果添加到svn中。例如,您的

  • 如果作业使用构建流(包括重复作业)运行,构建管道插件是否仍然正确显示作业序列? 以下是构建流程的伪代码: 包将从源代码控制中提取代码,编译它,并将其存储为工件 部署将从上游Package作业复制工件,然后将其复制到目标参数中提供的URL 集成测试将针对参数中提供的URL运行一套集成测试。 即使部署作业重复,构建管道插件是否将此管道显示为4个步骤?

  • 詹金斯的新成员。 目前,我们使用maven和Subversion作为SCM进行手动构建: > 在本地工作副本文件夹中,POM文件有1.1.1-SNAPSHOT,issue mvn release:clean release:prepare-p all modules 这将创建一个标记https://avn/path/to/tag/xxx-1.1.1,而我的本地工作副本仍在1.1.2-SNAPSHO

  • 问题内容: 我已经安装了Description Setter插件,但是我不知道是否以及如何使用BUILD_ID,它在jenkins / env-vars.html /中以以下格式显示:“ 2005-08-22_23-59-59”(YYYY- MM-DD_hh-mm-ss)。有谁知道我是否可以使用它以及如何使用? 显示BUILD_ID是向构建描述添加时间戳的最简单方法,但是如果不可能,如何实现? 谢