Jenkins管道脚本定期清除构建队列



我需要创建一个Jenkins管道来定期清除构建队列。我有一个可以在脚本控制台中运行的脚本,但是当我试图在管道中运行它时,它不起作用。

def q = Jenkins.instance.queue for (queued in Jenkins.instance.queue.items) { q.cancel(queued.task) }

我很确定它与导入类有关,但是我在编写这个脚本时遇到了问题。

如果你只是想从管道中清除整个构建队列,你可以使用Jenkins queue对象的clear方法,它将清除整个构建队列:

Jenkins.instance.queue.clear()

注意:你可能会得到一个RejectedAccessException: Scripts not permitted to use method错误时运行这个脚本,这意味着詹金斯管理员将不得不批准它。
此外,如果您在声明性管道中运行此代码,请确保使用script指令对其进行扭曲。

如果你使用Jenkins共享库,你可以在你的库中创建一个更通用的clearBuildQueue函数,然后在你的各种管道中使用它。
它可以看起来像:

@NonCPS
def clearBuildQueue(String pattern = ''){
def queue = Jenkins.instance.queue
if(pattern) {
queue.items.findAll { it.task.name =~ pattern}.each {
println "Item '${it.task.name}' was cleared from the queue"
queue.cancel(it.task)
}
}
else {
println "Clearing ${queue.items.length} items from the queue"
queue.clear()
}
}

相关内容

  • 没有找到相关文章

最新更新