2015-06-29 7 views
4

У меня есть около 100-120 заданий в одном из представлений под названием «Gradle Deploys», которые я создал в Jenkins. Как отключить все задания от Jenkins только с данной вкладки View /.Отключить все задания Jenkins из данного Jenkins View/Tab

Я пробовал следующий синтаксис groovy, чтобы сначала просто показать все задания в данном представлении, но он ошибется.

jenkins = Hudson.instance 

//The following works actually but gives a lot of info. 
//println "----" + jenkins.instance.getView("Gradle Deploys").items 

println "----" + jenkins.instance.getView("Gradle Deploys").items.each.getItems().print(it) 

После того, как я получить список только имен рабочих мест в данной точке зрения, я просто использовать «.disable) (» функцию в команде выше, и он будет работать.

Если я использую следующий код, он делает то, что я хочу, но я ищу один вкладыш.

for (item in jenkins.instance.getView("Gradle Deploys").items) { 
    println("\nJob: $item.name") 
    item.disabled=true 

} 

ответ

1

Спасибо Тиму за его решение. Я добавляю/повышение его немного дальше:

jenkins.instance.getView("Gradle Deploys").items*.disabled = true 

Но если вы хотите, чтобы напечатать что-то в то же время, вы будете нуждаться в каждом

jenkins = Hudson.instance 

    jenkins.instance.getView("Gradle Deploys").items.each { item -> 
    println "\nJob: $item.name" 
    item.disabled = true 
} 

Теперь вышеуказанные примеры работ отлично, если вы попытаетесь запустить их из «Консоли сценариев», но он не работает, если вы попытаетесь создать/запустить его как скрипт Scriptler (как показано ниже).

См. Выше. Вышеприведенный код работает в представлении сценария сценария в Jenkins (при нажатии кнопки «Управление Jenkins»> «Консоль сценариев»). Для этого вам может понадобиться плагин.

enter image description here

Теперь тот же сценарий не работает, когда я пытался создать Scripter сценарий и побежал его таким образом. Для этого требуется плагин Scriptler.

enter image description here

Чтобы решить выше сообщение об ошибке (как показано в Scriptler Script - окно), необходимо ввести еще одну строку (в верхней части).

Окончательный сценарий выглядит следующим образом (Примечание: Значение переменной VIEWNAME будет обеспечиваться параметром Scriptler, и он будет перезаписывать все, что вы уже в самом скрипте):

// Следующая строка необходима, если вы запускаете скрипт/код через сценарий сценария Scriptler. // Этот способ позволяет пользователю указать параметры (например: имя_имя) и использовать его для отключения работы только в этом представлении.

import hudson.model.* 

jenkins = Hudson.instance 

println "" 
println "--- Disabling all jobs in view: ${viewName}" 
println "" 

jenkins.instance.getView(viewName).items*.disabled = true 

//Now the above will disable it but you still need to save it. Otherwise, you'll loose your changes (of disabling the jobs) after each Jenkins restart. 
jenkins.instance.getView(viewName).items.each { item -> item.save() } 
9

Вы должны иметь возможность просто отключить их все:

jenkins.instance.getView("Gradle Deploys").items*.disabled = true 

Но если вы хотите, чтобы напечатать что-то в то же время, вы будете нуждаться в each

jenkins.instance.getView("Gradle Deploys").items.each { item -> 
    println "\nJob: $item.name" 
    item.disabled = true 
} 
+0

Можно ли использовать каждый в первой команде (однострочный), если я не хочу показывать/эхо ничего? –

+0

Вам не нужно, чтобы первая команда отключила все элементы, как есть –

+0

Я обновил ответ, чтобы поддерживать сценарий «Консоль сценариев» и «Scriptler» для запуска скрипта.В противном случае это дало мне ошибку, когда я попробовал код (который успешно работал в окне сценариев скриптов в Jenkins) как сценарий сценария Scriptler. –

Смежные вопросы