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

使用Groovy for Jenkins取消排队生成并中止执行生成

冯阳云
2023-03-14

对于使用Groovy System Script的Jenkins,是否有一种方法可以轻松地搜索构建队列和执行构建列表中的某些条件(特别是匹配某些条件的参数),然后终止/取消它们?

我似乎找不到任何方法来做到这一点,但似乎这应该是可能的。

共有3个答案

邢灿
2023-03-14

参考:https://xanderx.com/post/cancel-all-queued-jenkins-jobs/

在管理Jenkins中运行这个

Jenkins.instance.queue.clear()
南门鸿雪
2023-03-14

我知道这是个老问题,但谷歌给我指出了这个问题。这里显示的脚本只从队列中删除作业,不停止运行构建。下面的脚本将从队列中删除所有内容,并终止所有正在运行的构建:

  import java.util.ArrayList
  import hudson.model.*;
  import jenkins.model.Jenkins

  // Remove everything which is currently queued
  def q = Jenkins.instance.queue
  for (queued in Jenkins.instance.queue.items) {
    q.cancel(queued.task)
  }

  // stop all the currently running jobs
  for (job in Jenkins.instance.items) {
    stopJobs(job)
  }

  def stopJobs(job) {
    if (job in com.cloudbees.hudson.plugins.folder.Folder) {
      for (child in job.items) {
        stopJobs(child)
      }    
    } else if (job in org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject) {
      for (child in job.items) {
        stopJobs(child)
      }
    } else if (job in org.jenkinsci.plugins.workflow.job.WorkflowJob) {

      if (job.isBuilding()) {
        for (build in job.builds) {
        build.doKill()
        }
      }
    }
  }
文鸣
2023-03-14

我自己还没有测试过它,但是看看API,它应该可以通过以下方式实现:

import hudson.model.*
import jenkins.model.Jenkins

def q = Jenkins.instance.queue

q.items.findAll { it.task.name.startsWith('my') }.each { q.cancel(it.task) }

相关API链接:

  • http://javadoc.jenkins-ci.org/jenkins/model/Jenkins.html
 类似资料:
  • 问题内容: 对于使用Groovy系统脚本的Jenkins,是否可以轻松地搜索构建队列和正在执行构建的列表中的某些条件(特别是与某些条件匹配的参数),然后杀死/取消它们? 我似乎找不到任何方法可以执行此操作,但似乎应该可行。 问题答案: 我尚未亲自对其进行测试,但是通过以下方式查看API,应该可以实现: 相关API链接: http://javadoc.jenkins-ci.org/jenkins/m

  • 当我尝试编译我的应用程序时,我得到以下错误: 现在我一直在stackoverflow和其他网站上搜索,我不是唯一一个遇到这个问题的人。我尝试了这个解决方案,也重启了几次程序,并完全重新安装了Android Studio。我仍然得到了同样的错误。我还尝试手动从 文件夹,并手动将最新版本的gradle放入该文件夹。 没有任何帮助。还是会出错。

  • 块状应用程序通常生成JavaScript作为其输出语言,通常在网页(可能是同一网页或嵌入式WebView)中运行。 像任何生成器一样,第一步是导入javascript生成器。 对于Web Blockly,请在blockly_compressed.js之后添加javascript_compressed.js: <script src="blockly_compressed.js"></script>

  • 我的优先级队列有问题,无法正确排序对象值。 我的代码获取一个文本字符串,并获取唯一字符的数量,同时计算每个唯一字符的频率。然后将其放入字符和整数类型的映射中,并分别指定键和值。 然后,它获取映射的每个条目,并将其放入一个PQNode对象中,该对象也是Character、Integer类型,然后将其提供给优先级队列。 优先级队列是通过PQN中的comareTo方法按频率(值)从最低到最高对PQNod

  • Rust 的Future是懒惰的:除非是向着'完成'这一个目标积极前进,否则他们不会做任何事情。向 Future 完成前进的一种方法是,在async函数里面,对它.await,但这只会将问题升了个级:谁来管理,从顶层 async函数返回的 Futures ?答案是:我们需要一个Future执行者(executor)。 Future executor 获取一组顶层Future,并每当Future可以

  • 即便你已经用 Babel 编译了你的代码,但这还不算完。 babel-polyfill Babel 几乎可以编译所有时新的 JavaScript 语法,但对于 APIs 来说却并非如此。 比方说,下列含有箭头函数的需要编译的代码: function addAll() { return Array.from(arguments).reduce((a, b) => a + b); } 最终会变成这