jenkins - 如何禁用或删除现有作业的多分支管道触发器

标签 jenkins groovy

我有数百个 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()
          }
    }
 }

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

最佳答案

似乎只需要迭代触发器,并将正确的部分传递给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

非常感谢您的问题,您几乎可以工作的代码对我帮助很大。 ;)

关于jenkins - 如何禁用或删除现有作业的多分支管道触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54433661/

相关文章:

jenkins - 我可以使用 Jenkinsfile 中的函数构建阶段吗?

linux - 使用 Jenkins 部署到 Linux 服务器,然后从 Windows 服务器运行 selenium 测试

Jenkins/Groovy 将变量移出到配置文件

Java/groovy反射读取方法内容

python - 标准化特定语言的发布/工具组

Jenkins 声明式管道锁名称与变量

docker - 在 docker 容器中运行 Jenkins 有什么好处

jenkins - 执行 Jenkins 作业的用户是谁

debugging - 如何调试 Intellij Idea 中存储为文本的 Groovy 命令

java - 应如何将配置从 Gradle 扩展传递给 Gradle Task?