如何通过Jenkins脚本控制台设置“扫描组织触发器"? [英] How to set “Scan Organization Triggers” via Jenkins script console?
本文介绍了如何通过Jenkins脚本控制台设置“扫描组织触发器"?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要一种通过Jenkins脚本控制台设置扫描组织触发器"的方法.这很接近,但是仅显示多分支或组织扫描触发器(如果已存在):
I need a way to set "Scan Organization Triggers" via the Jenkins script console. This is close, but only shows Multibranch or Organization Scan triggers if they already exist:
https://github.com/cloudbees/jenkins-scripts /blob/master/setOrgFolderIndex.groovy
推荐答案
这是我制作的脚本,用于检测多分支或组织触发器.如果该项目还没有一个项目,它将创建一个触发器.注意:addTrigger部分已被注释掉,因此按原样运行应该是安全的.
Here's a script that I made that detects multibranch or organization triggers. If the project doesn't already have one, it will create a trigger. Note: the addTrigger part is commented out, so this should be safe to run as-is.
import com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger
import jenkins.model.Jenkins
import jenkins.branch.OrganizationFolder
import hudson.model.Job
projects = [:]
Jenkins.instance.getAllItems(AbstractItem.class).each { j ->
String jc = j.class.simpleName
if(!(jc in projects)) {
projects[jc] = 0
}
projects[jc]++
}
println "Count projects by type for: " + Jenkins.getInstance().getRootUrl()
println " Current Jenkins version: " + Jenkins.getInstance().version
projects.each { type, count ->
println " ${type}: ${count}"
}
println "\n-------Organization Items-------"
Jenkins.instance.getAllItems(jenkins.branch.OrganizationFolder.class).each { j ->
String jobName = j.fullName
Integer triggerCount = j.triggers.findAll { k,v -> v instanceof com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger}.size()
if (triggerCount > 0) {
myInterval = j.triggers.findAll { k,v -> v instanceof com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger}
.each { k,v -> println " trigger count: ${triggerCount} Interval: ${v.getInterval()}, jobName: ${jobName}" }
}
else {
def newInterval = new PeriodicFolderTrigger("1d")
println " trigger count: ${triggerCount} Interval: NULL, jobName: ${jobName}"
//println " creating trigger for ${jobName}"
//j.addTrigger(newInterval)
//j.save()
}
}
println "\n-------Multibranch Items-------"
Jenkins.instance.getAllItems(org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProject.class).each { j ->
String jobName = j.fullName
Integer triggerCount = j.triggers.findAll { k,v -> v instanceof com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger}.size()
if (triggerCount > 0) {
myInterval = j.triggers.findAll { k,v -> v instanceof com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger}
.each { k,v -> println " trigger count: ${triggerCount} Interval: ${v.getInterval()}, jobName: ${jobName}" }
}
else {
def newInterval = new PeriodicFolderTrigger("1d")
println " trigger count: ${triggerCount} Interval: NULL, jobName: ${jobName}"
//println " creating trigger for ${jobName}"
//j.addTrigger(newInterval)
//j.save()
}
}
return
这篇关于如何通过Jenkins脚本控制台设置“扫描组织触发器"?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文