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

如何在不重启服务器的情况下停止Jenkins上不可阻挡的僵尸工作?

严心水
2023-03-14

我们的Jenkins服务器有一个已经运行了三天的作业,但是没有做任何事情。单击角落里的小X没有任何作用,控制台输出日志也没有显示任何内容。我已经检查了我们的构建服务器,这个工作实际上似乎根本没有运行。

有没有办法通过编辑一些文件或锁之类的东西来告诉詹金斯这项工作已经“完成”了?因为我们有很多工作,所以我们不想重新启动服务器。

共有3个答案

危寒
2023-03-14

如果您有多分支管道作业(并且您是Jenkins管理员),请在Jenkins脚本控制台中使用以下脚本:

Jenkins.instance
.getItemByFullName("<JOB NAME>")
.getBranch("<BRANCH NAME>")
.getBuildByNumber(<BUILD NUMBER>)
.finish(hudson.model.Result.ABORTED, new java.io.IOException("Aborting build"));

从…起https://issues.jenkins-ci.org/browse/JENKINS-43020

如果您不确定作业的全名(路径),您可以使用以下代码段列出所有项的全名:

  Jenkins.instance.getAllItems(AbstractItem.class).each {
    println(it.fullName)
  };

从https://support.cloudbees.com/hc/en-us/articles/226941767-Groovy-to-list-all-jobs

凌修伟
2023-03-14

转到“管理詹金斯”

您可以使用Thread获得所有活动线程。getAllStackTraces()并中断挂起的文件。

Thread.getAllStackTraces().keySet().each() {
  t -> if (t.getName()=="YOUR THREAD NAME" ) {   t.interrupt();  }
}

更新:

使用线程的上述解决方案可能无法在更近的Jenkins版本上工作。要中断冻结的管道,请参考此解决方案(由alexandru-bantiuc)并运行:

Jenkins.instance.getItemByFullName("JobName")
                .getBuildByNumber(JobNumber)
                .finish(
                        hudson.model.Result.ABORTED,
                        new java.io.IOException("Aborting build")
                );
贝嘉泽
2023-03-14

我也有同样的问题,并通过詹金斯控制台修复它。

转到“管理詹金斯”

 Jenkins .instance.getItemByFullName("JobName")
        .getBuildByNumber(JobNumber)
        .finish(hudson.model.Result.ABORTED, new java.io.IOException("Aborting build")); 

您只需指定您的JobName和JobNumber。

 类似资料:
  • 问题内容: 我们的Jenkins服务器有一项已经运行了三天的工作,但是什么也没做。单击角落的小X不会执行任何操作,并且控制台输出日志也不会显示任何内容。我已经检查了我们的构建服务器,该工作实际上似乎根本没有运行。 有没有办法通过编辑某些文件或锁或其他内容来告诉jenkins该工作已“完成”?由于我们有很多工作,因此我们实际上并不想重启服务器。 问题答案: 转到“管理Jenkins”>“脚本控制台”

  • 我有两份工作。我的主要第一个jenkins项目使用“trigger/call builds on other project”插件触发另一个第二个项目。我的第二个项目是一种服务器,我首先使用触发器和我的主要第一个项目流程启动它。现在我想在我的第一个项目构建完成后停止我的第二个僵尸项目。 我找到了一些参考资料,如下所示:- 如何停止不可阻挡的僵尸工作Jenkins不重启服务器? 但我想停止我的僵尸工

  • 问题内容: 我使用带有标签的php docker容器作为基础: 当我尝试重新启动容器内的apache2时,容器停止: 如何在不停止容器的情况下重新启动apache2? 在将更改放入dockerfile之前,我想使用容器并对其进行自定义。我想安装一些扩展程序,为了使其正常工作,我需要重新启动apache才能使更改生效。 这是通过以下文件的日志文件: 问题答案: 如果将apache用作保持运行容器的主

  • 我是詹金斯的新手。我已经在ApacheTomcat服务器上安装了Jenkins。我已经安装了几个插件,必须重新启动它。当我尝试使用http://localhost:8080/jenkins/safeRestart它不工作,并显示消息“Jenkins无法按当前配置重新启动”。我尝试使用windows服务“C:\Program Files(x86)\Jenkins”重新启动 谢谢并问候斯瓦蒂

  • 我已经从以下网站下载了“jenkins-1.501.zip”http://jenkins-ci.org/content/thank-you-downloading-windows-installer . 我已经解压缩了zip文件并成功地在Windows7上安装了Jenkins。詹金斯在好的。我想从控制台停止Jenkins服务。我该怎么做?通过控制台/命令行启动和重新启动的方式是什么?

  • 问题内容: 我有以下代码: 在发生某些事件之后,我应该停止在的方法中声明的操作,该方法实现。 我怎样才能做到这一点?我无法关闭执行器,只能撤消我的定期任务。我可以用吗?如果可以的话,请告诉我它将如何工作。 问题答案: 使用。该是你的任务的处理。您需要取消此任务,它将不再执行。 实际上,是签名,并将其与参数一起使用将导致当前正在运行的执行线程被调用中断。如果线程在阻塞的可中断调用(例如)中等待,则会