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

有没有办法告诉jenkins工作已经“完成”了,比如编辑一些文件或锁之类的?因为我们有很多任务,所以我们并不想重新启动服务器。


当前回答

在https://my-jenkins/script上使用脚本控制台

import hudson.model.Job
import org.jenkinsci.plugins.workflow.job.WorkflowRun

Collection<Job> jobs = Jenkins.instance.getItem('My-Folder').getAllJobs()
for (int i = 0; i < jobs.size(); i++) {
  def job = jobs[i]
  for (int j = 0; j < job.builds.size(); j++) {
    WorkflowRun build = job.builds[j]
    if (build.isBuilding()) {
      println("Stopping $job ${build.number}")
      build.setResult(Result.FAILURE)
    }
  }
}

其他回答

半小时前我也有同样的问题…

无法删除在我的多分支管道中运行的僵尸构建。 甚至服务器重启UI,甚至从命令行通过sudo服务jenkins重启 阻止了行刑…建造是无法停止的……它总是重新出现。

使用版本:Jenkins 2.150.2

我很生气,但是……在查看构建日志时,我在日志的末尾发现了一些有趣的东西:

红色标记的部分是“令人沮丧的部分”…… 正如你所看到的,我一直想要从UI中止构建,但它不起作用…

但是有一个文本超链接点击这里强制终止运行步骤…(第一个绿色的) 现在我按下了链接…) 在链接执行后,出现了关于仍然暂停的消息和另一个链接单击 这里强制杀死整个建筑(第二个绿色的) 在按下这个链接之后,这个构建也最终被硬杀了…

因此,这似乎不需要任何特殊的插件(除了多分支管道构建插件本身)。

有一次我遇到了一个无法通过“脚本控制台”停止的构建。最后我通过以下步骤解决了这个问题:

ssh onto the jenkins server
cd to .jenkins/jobs/<job-name>/builds/
rm -rf <build-number>
restart jenkins

我看了Jenkins源代码,似乎我要做的是不可能的,因为停止一个作业似乎是通过线程中断完成的。我不知道为什么这个工作被搁置了。

编辑:

就业势不可挡的可能原因:

如果Jenkins陷入了无限循环,它就永远不能中止。 如果Jenkins在Java虚拟机中进行网络或文件I/O(例如长时间的文件复制或SVN更新),则不能中止。

进入蓝海用户界面。 试着从那里阻止他。

以下是我在2.100版本中使用Blue Ocean解决这个问题的方法

我唯一安装的插件是bitbucket。 我只有一个节点。

ssh到我的Jenkins盒子里 cd ~ /。詹金斯(我放詹金斯的地方) cd工作/ < job_name > /分支/ < problem_branch_name > /构建 Rm -rf <build_number>

在此之后,您可以选择在nextBuildNumber中更改数字(我这样做) 最后,我重新启动jenkins (brew services restart jenkins),这一步显然会有所不同,这取决于您如何管理和安装jenkins。