我有数百个jenkins作业(多分支管道),启用了触发器,每隔5分钟会定期扫描相应的存储库。我正在尝试禁用特定文件夹(开发/微服务)中所有现有作业上的“扫描多分支管道触发器”。我正在从Jenkins脚本控制台运行以下脚本,并在removeTrigger处获取异常
import hudson.model.*
import hudson.triggers.*
import jenkins.model.*
import com.cloudbees.hudson.plugins.folder.Folder
for (it in Jenkins.instance.getAllItems(jenkins.branch.MultiBranchProject.class)) {
if(it.fullName.length() > 25 && it.fullName.substring(0,25) ==
'development/microservice/' && it.fullName.split("/").length == 3) {
println it.fullName
it.triggers.each { descriptor, trigger ->
it.removeTrigger(descriptor)
it.save()
}
}
}
有人可以帮助我如何以编程方式禁用多分支管道作业上的触发器。
答案 0 :(得分:1)
似乎只需要遍历触发器,然后将正确的部分传递给removeTrigger()
;这意味着传递触发器而不是描述符:
for (p in Jenkins.instance.getAllItems(jenkins.branch.MultiBranchProject.class)) {
p.triggers.each { descriptor, trigger ->
//println descriptor
//println trigger
p.removeTrigger(trigger)
}
}
在未注释掉println
语句时,单个触发器的输出示例:
com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger$DescriptorImpl@30f35b28
com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger@3745f994
非常感谢您的提问,您几乎可以使用的代码对我有很大帮助。 ;)