Jenkins 如何在现有作业上禁用或删除多分支管道触发器

Jenkins 如何在现有作业上禁用或删除多分支管道触发器,jenkins,groovy,Jenkins,Groovy,我有数百个jenkins作业(多分支管道),启用触发器,每5分钟定期扫描各自的存储库。我试图在特定文件夹(development/microservice)中的所有现有作业上禁用“扫描多分支管道触发器”。我从Jenkins脚本控制台运行下面的脚本,并在removeTrigger中获得异常 import hudson.model.* import hudson.triggers.* import jenkins.model.* import com.cloudbees.hudson.plugins

我有数百个jenkins作业(多分支管道),启用触发器,每5分钟定期扫描各自的存储库。我试图在特定文件夹(development/microservice)中的所有现有作业上禁用“扫描多分支管道触发器”。我从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()
          }
    }
 }

有人能帮助我如何以编程方式禁用多分支管道作业上的触发器吗。

似乎只需要迭代触发器,并将正确的部分传递给
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
非常感谢您的提问,您几乎可以正常工作的代码对我帮助很大<代码>;)