Как отключить или удалить триггерный конвейер на существующих заданиях - PullRequest
0 голосов
/ 30 января 2019

У меня есть сотни заданий 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()
          }
    }
 }

Может кто-нибудь, пожалуйста, помогите мне, как программно отключить триггеры на заданиях многоотраслевого конвейера.

1 Ответ

0 голосов
/ 18 августа 2019

Кажется, нужно просто перебрать триггеры и передать правую часть в 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

Большое спасибо за ваш вопрос, ваш почти рабочий код мне очень помог.;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...