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

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


当前回答

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

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

其他回答

我编写的一个名为jkillthread的实用程序可以用来停止任何Java进程中的任何线程,只要您能够以相同的帐户登录到运行该服务的机器。

不需要使用脚本控制台或其他插件,您可以通过在浏览器中的构建URL后输入/stop、/term或/kill来简单地中止构建。

从上述链接逐字引用:

管道作业可以通过向URL发送HTTP POST请求来停止 构建的端点。 <BUILD ID URL>/stop -中止管道。 <BUILD ID URL>/term -强制终止构建(应该只在stop不起作用时使用。 <BUILD ID URL>/kill -硬杀死一个管道。这是阻止管道的最具破坏性的方法,只能作为最后一种方法 度假胜地。

在这种情况下,我通常使用jenkins-cli。你可以从http://your-jenkins-host:PORT/cli上下载这个罐子。然后运行

java -jar jenkins-cli.jar delete-builds name_of_job_to_delete hanging_job_number

辅助信息:

你也可以通过350:400这样的构建范围。 一般帮助可通过运行

java -jar jenkins-cli.jar help

上下文命令帮助删除构建by

java -jar jenkins-cli.jar delete-builds

非常简单的解决方案

我看到这个问题的原因是页面上不正确的http链接,而不是应该停止工作的https。所有你需要做的是编辑onclick属性在html页面,通过以下

Open up a console log of the job (pipeline) that got hang Click whatever is available to kill the job (x icon, "Click here to forcibly terminate running steps" etc) to get "Click here to forcibly kill entire build" link visible (it's NOT gonna be clickable at the moment) Open the browser's console (use any one of three for chrome: F12; ctrl + shift + i; menu->more tools->developer tools) Locate "Click here to forcibly kill entire build" link manually or using "select an element in the page" button of the console Double click on onclick attribute to edit its value Append s to http to have https Press enter to submit the changes Click "Click here to forcibly kill entire build" link

使用截图作为参考

如果你有一个Multibranch Pipeline-job(并且你是Jenkins-admin),在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