对于Jenkins使用Groovy系统脚本,有没有办法轻松搜索构建队列和执行构建列表的某些条件(特别是匹配某些条件的参数),然后杀死/取消它们?
我似乎无法找到任何方法来做到这一点,但它似乎应该是可能的.
And*_*ich 66
我自己没有测试过,但是看看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) }
Run Code Online (Sandbox Code Playgroud)
相关API链接:
小智 33
我知道这是一个古老的问题,但Google指出了这个问题.此处显示的脚本仅从队列中删除作业,并且不会停止运行构建.以下脚本只是从队列中删除所有内容并杀死所有正在运行的构建:
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()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 29
参考资料:https : //xanderx.com/post/cancel-all-queued-jenkins-jobs/
在 Manage Jenkins > Script Console 中运行:
Jenkins.instance.queue.clear()
Run Code Online (Sandbox Code Playgroud)
小智 7
经过一番调查,我想出了这个对我来说绝对没问题的代码。它清除队列并中止当前正在执行的所有作业。
先决条件:
import jenkins.model.Jenkins
import hudson.*
import hudson.model.*
import jenkins.*
// Remove everything which is currently queued
Jenkins.instance.queue.clear()
def buildingJobs = Jenkins.instance.getAllItems(Job.class).findAll {
it.isBuilding()
}
buildingJobs.each {
def jobName = it.toString()
def val = jobName.split("\\[|\\]")
// 'Abort jobs' is the name of the job I have created, and I do not want it to abort itself.
if((val[1].trim())!='Abort jobs') {
def job = Jenkins.instance.getItemByFullName(val[1].trim())
for (build in job.builds) {
if (build.isBuilding()) {
println(build)
build.doStop();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
不能添加为注释,但是直到今天,对于最新的詹金斯来说,安德烈的剧本(漂亮)需要再次导入才能起作用。作为系统Groovy脚本执行。
詹金斯(Jenkins)犯了错误,并提到了缺失的班级。我包括提到该问题的网址:
//import hudson.model.*
// per http://stackoverflow.com/questions/17429050/running-groovy-command-from-jenkins-using-groovy-script-plugin
// requires this now
import jenkins.model.Jenkins
def q = Jenkins.instance.queue
q.items.findAll { it.task.name.startsWith('my') }.each { q.cancel(it.task) }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
38881 次 |
最近记录: |