我们的Jenkins服务器有一个已经运行了三天的作业,但是没有做任何事情。单击角落里的小X没有任何作用,控制台输出日志也没有显示任何内容。我在我们的构建服务器上检查过,该作业实际上似乎根本没有在运行。
有没有办法告诉jenkins工作已经“完成”了,比如编辑一些文件或锁之类的?因为我们有很多任务,所以我们并不想重新启动服务器。
我们的Jenkins服务器有一个已经运行了三天的作业,但是没有做任何事情。单击角落里的小X没有任何作用,控制台输出日志也没有显示任何内容。我在我们的构建服务器上检查过,该作业实际上似乎根本没有在运行。
有没有办法告诉jenkins工作已经“完成”了,比如编辑一些文件或锁之类的?因为我们有很多任务,所以我们并不想重新启动服务器。
当前回答
如果“X”按钮不起作用,作业被卡住,那么只需删除特定的版本号。这将解放遗嘱执行人。
在我的例子中,即使工作完成了,它仍然停留在执行者几个小时。删除构建对我来说是有效的。
其他回答
我看了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。
我有很多僵尸工作,所以我使用下面的脚本:
for(int x = 1000; x < 1813; x = x + 1) {
Jenkins .instance.getItemByFullName("JOBNAME/BRANCH")
.getBuildByNumber(x)
.finish(hudson.model.Result.ABORTED, new java.io.IOException("Aborting build"))
}
不需要使用脚本控制台或其他插件,您可以通过在浏览器中的构建URL后输入/stop、/term或/kill来简单地中止构建。
从上述链接逐字引用:
管道作业可以通过向URL发送HTTP POST请求来停止 构建的端点。 <BUILD ID URL>/stop -中止管道。 <BUILD ID URL>/term -强制终止构建(应该只在stop不起作用时使用。 <BUILD ID URL>/kill -硬杀死一个管道。这是阻止管道的最具破坏性的方法,只能作为最后一种方法 度假胜地。