如何为特定的詹金斯工作设置`killSoftly`?


11

我的Jenkins构建在构建和构建后步骤之间挂起。

控制台输出显示有6分钟的等待时间(但我已经看到等待时间长达一小时):

10:53:26 BUILD FAILED in 1m 7s
10:53:26 4 actionable tasks: 4 executed
10:53:26 Build step 'Invoke Gradle script' changed build result to FAILURE
10:53:26 Build step 'Invoke Gradle script' marked build as failure
11:09:29 [CucumberReport] Using Cucumber Reports version 4.9.0

我发现这个问题有类似的问题,他们说的解决方法是设置-DSoftKillWaitSeconds=0jenkins.xml

但是,我需要一种只为特定作业设置选项的方法,而不会弄乱全局Jenkins设置(我不想弄乱其他项目)。

编辑:

当我手动中止作业时,在[CucumberReport]步骤之前,仍然会生成Cucumber报告。

我还选中了“构建环境”选项中的“ 如果构建卡住了,则中止构建”复选框,其中“超时”策略设置为No Activity(“超时秒数= 2”)。

当我使用这些设置来生成项目时,生成将失败,并且像以前一样,在“生成历史记录”中显示“ 0秒后中止”,但控制台输出将相同。(没有任何变化,但将在一定的超时后生成黄瓜报告)。


您想使用该参数实现什么?也许有一个更简单的解决方案。
Michael Kemmerzell

我想减少构建阶段后的等待时间。从控制台输出中可以看到,在构建和构建后步骤之间需要等待6分钟。
伴侣Mrše

您可以提供管道的某些部分吗?我怀疑詹金斯只是被卡住了-这里必须发生一些事情。
Michael Kemmerzell

您能否更具体地说明管道的哪些部分是您感兴趣的部分,以便由于无法共享实际代码而可以编辑和共享某些部分?
伴侣Mrše

您不能只timeout在管道中设置一个选项吗?您绝对应该发布管道的简化版本。很难“猜测”出什么问题了。另外,这个问题可能更适合在devops.stackexchange.com
tftd

Answers:


4

这是不可能为作业选择特定值SoftKillWaitSeconds(该值从詹金斯核心在派生在作业名称未知)。

我的建议是修复作业本身中的中止处理,因此它不会依赖于“软终止超时”。如果您在Unix-ish系统上运行,则可以通过在新的进程组(set -m以bash格式)中运行作业并(例如)设置适当的出口陷阱来确保这一点。


由于我是Jenkins的新手,您能否扩展一下“在新的流程组中运行您的工作(在bash中设置-m)并(例如)设置适当的出口陷阱”?
伴侣Mrše

这与詹金斯本身无关。如果您的工作涉及“执行外壳”构建步骤(或者可以更改它,则可以使用此方法)。然后使用“设置-m”创建一个新的进程组,并使用像所示的陷阱在这里,以确保组中的所有进程将被杀死。
Alex O

3

我们正在使用Build-timeout插件杀死超时策略设置为No Activity或的卡住作业Absolute。对我来说,当您使用自由样式项目时,这是一个好方法。您的构建“在0秒后中止”的原因是很可能存在未完成的子进程。从文档

因为Java只允许在一组固定的位置中断线程,这取决于构建的挂起方式,所以中止操作可能不会生效。例如,

  • 如果Jenkins正在等待子进程完成,则它可能会立即中止。
  • 如果詹金斯(Jenkins)被困在无限循环中,那么它就永远不会中止。
  • 如果Jenkins在Java VM中执行网络或文件I / O(例如冗长的文件复制或SVN更新),则不能中止它。

您可以尝试绝对超时策略。您可以定义一个全局变量,以免重复作业中的超时值:

  1. 转到“管理Jenkins”>“配置系统”。
  2. 检查“全局属性”中的“环境变量”。
  3. 添加环境变量name =“ GLOBAL_TIMEOUT_MINUTES” value =“ 20”。
  4. 进入项目的配置页面。
  5. 检查“构建环境”中的“中止构建是否被卡住”。
  6. 为“超时策略”选择“绝对”。当然,也适用于其他策略。
  7. 将“ $ {GLOBAL_TIMEOUT_MINUTES}”设置为“超时”。
  8. 设置超时操作“中止构建”。

如果这不起作用,则可以尝试查看日志https:// your-jenkins-server / log或线程转储。
挂起可能是由新旧版本的插件引起的。尝试查找未完成的子进程。尝试逐个禁用构建后操作,以查找可能导致问题的原因之一。您可以看到/superuser/1401879/debugging-what-happens-when-a-jenkins-build-unexpectedly-pauses-or-hangs


推荐有用的信息,但是并不能解决我的问题。我已经尝试过构建超时插件,但没有成功。
伴侣Mrše
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.