Groovy-скрипт для извлечения заданий, начинающихся с заданного имени
Я хотел бы получить список заданий, начинающихся с заданного имени, с последующим обновлением узла метки, на котором задание может выполняться. Я сделал следующее, но безуспешно. Любые входы в то, что мне здесь не хватает.
import hudson.model.*;
import hudson.util.*;
import hudson.model.labels.*;
import jenkins.model.*;
import hudson.FilePath.FileCallable;
import hudson.slaves.OfflineCause;
import hudson.node_monitors.*;
buildableItems = Jenkins.instance.getAllItems.each {job ->
job.name.startsWith("Automation -")
println job.fullName;
}
for(item in buildableItems) {
job.assignedlabel = new LabelAtom('new-label-name')
item.save()
}
2 ответа
Спасибо @NoamHelmer. У меня возникла ошибка форматирования значений имени задания вывода. Из-за чего метка была изменена и вызвала ошибку в формате имени задания, но не смогла перейти к следующему имени задания. Я смог исправить это с помощью оператора continue.
import hudson.model.labels.*
import jenkins.model.Jenkins
def views = ["Automation – DEV", "Automation – PROD", "Automation – QA", "Automation – Staging"]
for (view in views) {
def buildableItems = Jenkins.instance.getView(view).items.each {
println it.fullName
}
for (item in buildableItems) {
try {
item.assignedLabel = new LabelAtom('New_Label_name')
} catch (Exception e) {
continue;
}
println(item.name + " > " + item.assignedLabel)
}
}
Еще раз спасибо за ваш вклад !!
Заявление, на которое вы подаете в суд, просто перебирает элементы и закрывает их, но ничего не возвращает. Вместо этого вы должны отфильтровать свой список с помощью
findAll
, затем для возвращенного отфильтрованного списка запустите код, чтобы изменить метки:
import jenkins.*
import hudson.model.labels.*;
filtredJobs = Jenkins.instance.items.findAll { job ->
job.name.startsWith("Automation -")
}
// Update the label for the filtered jobs
filtredJobs.each { job ->
job.assignedlabel = new LabelAtom('new-label-name')
item.save()
}
Или, в качестве альтернативы, используйте
each
и запустите как условие, так и конфигурацию в одной итерации:
import jenkins.*
import hudson.model.labels.*;
Jenkins.instance.items.each { job ->
if (job.name.startsWith("Automation -")) {
job.assignedlabel = new LabelAtom('new-label-name')
item.save()
}
}