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

Jenkins作业运行系统的Groovy脚本如何响应用户杀死

侯池暝
2023-03-14
问题内容

我有一个长期运行的System
Groovy脚本,它可以启动数以万计的其他构建。为了不使构建队列过长(这将使UI无法使用),它将监视构建队列的长度。如果构建队列长于给定的阈值,它将不会启动任何新的构建并休眠一分钟。

问题是,此脚本无法响应用户的kill操作。当用户单击UI上的“杀死此构建”按钮时,什么也没有发生。我想知道是否有一种方法可以让系统Groovy脚本检查是否应该终止当前版本,因此它将退出睡眠并等待循环?

我尝试监视Executor.shouldRun(),但是用户的kill操作不会更改它。


问题答案:

我过去曾调查过“杀死”按钮的问题。我的理解是,杀死信号实际上是立即发送给工作的。但是,如果该工作在其他API(或类似的东西)中很忙,则无法保证将其提取。但是,kill信号将不会被存储,否则作业将立即对其做出反应,否则将被忽略。睡眠一分钟可能就是这种情况。

因此,作为一种变通办法,我将创建自己的机制来向您的脚本发出信号,告知它应该停止。这可以通过将文件放置到特定位置(例如,groovy脚本作业的工作空间)来完成。这可以通过第二项作业称为Kill_job_1来完成。现在,在您的工作开始休眠之前(或在唤醒之后),您检查该文件是否存在,如果找到该文件,则结束脚本。当您第二次开始工作时,请不要忘记确保已清理文件



 类似资料:
  • 我对是否可以在从属节点中使用Groovy脚本运行Jenkins作业感到困惑。我提到了一个 StackOverflow 答案 [1],它说 System Groovy 脚本作业可以在主站而不是从站中运行,并且要在从站中运行作业,它必须是 Groovy 脚本而不是 System Groovy 脚本。有人可以澄清我是否可以使用系统时髦脚本运行从属作业吗?由于我正在尝试通过Groovy脚本,因此无法访问几

  • 有人能解释jenkins中执行groovy脚本和执行系统groovy脚本之间的区别吗?以及如何使用执行系统groovy脚本将脚本调用到从属。

  • 是否可以从Groovy脚本运行jenkins作业? 我知道这是可能的运行詹金斯的工作从管道像这样 生成作业:“测试” 这也不起作用 构建(“测试”) 错误 生成作业:“测试” 编辑后执行系统Groovy脚本并添加 我在Hudson.instance.queue这条线上出错了。计划(作业,0,causeAction,paramsAction) 构建步骤“执行系统Groovy脚本”将构建标记为失败

  • 问题内容: 谁能解释jenkins中的执行groovy脚本和执行系统groovy脚本之间的区别?以及如何使用执行系统常规脚本将脚本调用为从属脚本。 问题答案: 要在从机上执行groovy脚本,您应该使用groovy插件 引用 普通的“ Groovy脚本”在运行构建的从属服务器上的派生JVM中运行。它与运行“ groovy”命令并传入脚本基本相同。 问题的第一部分在同一页面中回答 系统常规脚本OTO

  • 我想在詹金斯中强制执行以下场景: 我有工作A和工作B 我想在执行作业B时禁用作业A,在执行作业B后,我想再次启用作业A。 为了启用/禁用作业A,我使用了Groovy插件:Groovy插件 Groovy插件提供了两种可能性:执行Groovy脚本和执行系统Groovy脚本。 在开始执行作业B时,我添加了以下代码片段: 执行工作B后: 当我运行作业B时,它失败了,出现以下异常: 当我运行作业B时,它失败

  • 我需要从Jenkins作业中获取脚本路径。 请查看下面的屏幕截图,以便更清楚地了解需求。 我已经登录谷歌,获取了一些Groovy控制台脚本,其中列出了每个作业的详细信息。 通过使用jenkins.model.Jenkins.getJobNames()方法,我能够得到Jenkins中的所有作业,但实际上需要的是获得Scriptpath值,在每个作业中提到。 哪个Jenkins类/方法可以提供这些细节