当前位置: 首页 > 知识库问答 >
问题:

如何为特定的Jenkins工作设置“基尔软”?

呼延英奕
2023-03-14

我的Jenkins build挂起在build和post build步骤之间。

控制台输出显示有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

我发现这个和这个问题有类似的问题,他们说解决方案是在jenkins中设置-DSoftKillWaitSeconds=0。xml

然而,我需要一种方法,只为特定的工作设置选项,而不干扰全局Jenkins设置(我不想干扰其他项目)。

编辑:

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

我还选中了build Environment options(构建环境选项)中的Abort the build if is Stick(如果被卡住,则中止构建)复选框,将超时策略设置为No Activity(超时秒=2)。

当我使用这些设置构建项目时,构建将失败,并在构建历史中显示“0秒后中止”,与之前一样,但控制台输出将是相同的。(不会发生任何变化,但会在特定超时后生成报告)。

共有2个答案

太叔志尚
2023-03-14

我们正在使用Build-timeout插件以将超时策略设置为无活动绝对来杀死卡住的作业。对我来说,当您使用自由式项目时,这是一种很好的方法。您的构建为“0秒后中止”的原因是很可能有未完成的子进程。从留档:

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

  • 如果Jenkins正在等待子进程完成,它可以立即中止

你可以试试绝对超时策略。您可以定义一个全局变量,这样就不会在作业中重复超时值:

  1. 转到管理Jenkins

如果这不起作用,您可以尝试查看日志https://your-jenkins-server/log或者在线程转储中
挂起可能是由新/旧版本的插件引起的。试着找出哪些是未完成的子进程。尝试逐个禁用生成后操作,以找到可能是问题原因的操作。你可以看到https://superuser.com/questions/1401879/debugging-what-happens-when-a-jenkins-build-unexpectedly-pauses-or-hangs

云鸿祯
2023-03-14

无法为SoftKillWaitSeconds选择特定于作业的值(该值是在作业名称未知的点从Jenkins core派生的)。

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

 类似资料:
  • 我有一个外部工具,在我的jenkins工作中应该称为构建步骤。不幸的是,该工具在引用命令以避免从调用的路径中出现空格问题方面存在一些问题。 Jenkins安装在中。因此,我在jenkins调用外部工具时遇到了问题。 我尝试的是设置“工作区根目录”在詹金斯 - 一种解决方案是将整个詹金斯安装移动到例如。我想避免这种情况。有没有一种正确的方法来告诉 Jenkins 管道作业也使用“工作区根目录”? 感

  • 问题内容: 我对配置Jenkins或Python还是很陌生,但我必须在Jenkins中设置单一测试。我的程序是在Python中运行的,但仅在Python 2.6上可以运行,而我应该使用的Jenkins版本是2.7,因此我试图设置Jenkins来设置一些环境变量,以便它准备为该特定测试启动准确的Python(它是一个更大的项目的一部分,该项目将成功运行其他运行良好的测试)。 我的想法是在命令中设置执

  • 也许我只是很难把头缠在上面。从我所做的研究中,我理解了它是如何工作的,尤其是这个问题:代号一是如何工作的? 但是如果我想在Android中拦截传入的文本呢?这对iOS应用程序有何影响?如果我想使用Vimeo的API上传视频(我有一个Android应用程序可以做到这一点),我必须获得源代码并单独添加吗?

  • 问题内容: 我正在尝试在Ubuntu服务器上设置cron作业。我们希望cron作业在一天中的特定时间和一周中的某些特定日期运行脚本。例如,我们要设置一个cron作业,按以下顺序运行脚本: 在工作日中,从上午9点到下午2点每2分钟执行一次脚本。 到目前为止,这是我能够做到的: / 2 09-14 * * * / path_to_script 我平日应该做什么? 问题答案: 与您几个小时的操作相同:

  • 建议最多的问题没有答案。 我想为建立和维护的整个http连接设置一个特定的标头(keep-alive设置为true),即, 我提出的每个请求都应该包含我的自定义头。显然, 不是一个选项,因为它为整个设置标头,而我希望它只用于特定的连接,该连接是在我第一次调用服务器上的URL时创建的。 然后,该服务器将连接保持为活动状态,并希望我在连接处于活动状态时发出的每个后续请求都有一个MyHeader头。

  • 在我的机器上,我安装了两个Java版本:(我手动安装的1.6和1.7)。我需要他们两个为不同的项目。但对于Maven,我需要1.7,但我的Maven使用的是1.6 Java版本。