Могу ли я отключить автоматические запланированные сборки Hudson сразу?
-
18-09-2019 - |
Вопрос
У нас есть большая система Hudson, на которой постоянно выполняется множество запланированных сборок.В настоящее время я пытаюсь заставить одну сборку работать должным образом, но иногда мне приходится ждать, когда запланированная сборка попадет в очередь.Есть ли способ отключить все запланированные сборки, чтобы я мог сосредоточиться на своей проблемной сборке, не изменяя настройки "cron" для каждой отдельной сборки?
Решение
Скажите ему, чтобы он приготовился к отключению.
Редактировать из OP (банджолити)
Это не идеально, но я думаю, что это разумное решение типа "несколько щелчков мыши с установкой по умолчанию", отсюда и принятый ответ.
- Поставить задание в очередь
- Скажите Хадсону, чтобы он приготовился к отключению.Это предотвращает выполнение других заданий в то же время.
- Диагностировать ошибки в моей работе, фиксировать новый код, который мог бы исправь это.(Я люблю свою работу).
- Отмените закрытие Хадсона.
- Переходим к шагу 1.
Другие советы
В "нарезка конфигурации" плагин, который я внес, позволяет вам изменять настройки cron для многих заданий одновременно.Это должно позволить вам вносить массовые изменения, которые вы хотите.
Развивая предложение Mikezx6r, я только что придумал быстрый метод отключения всех сборок, соответствующих определенной строке:
[user@server jobs] $ for i in *build_name*; do sed -i s/"disabled>false"/"disabled>true/" $i/config.xml; done
Вы также можете выполнить итерацию по определенным именам сборок в цикле "for":
[user@server jobs] $ for i in build1 build2 build3; do sed -i s/"disabled>false"/"disabled>true/" $i/config.xml; done
Вы можете сначала протестировать его, чтобы увидеть, что он будет делать, поставив "echo" перед sed:
[user@server jobs] $ for i in build1 build2 build3; do echo sed -i s/"disabled>false"/"disabled>true/" $i/config.xml; done
И наоборот, вы можете повторно включить все совпадающие задания, переключившись с помощью сценария sed:
[user@server jobs] $ for i in build1 build2 build3; do sed -i s/"disabled>true"/"disabled>false/" $i/config.xml; done
Я не вижу прямого способа сделать это, но вы могли бы написать что-нибудь, что обновляет config.xml для всех заданий.
В справочнике каждой вакансии в Хадсоне есть config.xml .В <project> есть элемент с именем disabled, который вы могли бы обновить до true, тем самым отключив эту сборку.
Не идеально, но как только у вас есть скрипт для обхода каталога и изменения значения disabled, вы всегда можете его использовать.
Поиск чего-то подобного привел меня к этому вопросу, и я понял, что есть еще одно преимущество ответа Майкла Донохью (и плагина, который он внес).
С помощью "Разбиения конфигурации" легко отключить все подмножества ваших заданий одновременно.Это именно то, что мне было нужно, чтобы временно отключить 7 из 8 связанных заданий, чтобы я мог работать на 8-м.Спасибо, Майкл!
Это можно сделать с помощью консоли jenkins.Он запускает groovy script и делает практически все, что угодно.
Следующий скрипт выполняет итерации по всем проектам.Проверьте, есть ли у него TimerTrigger.(Можно расширить эту проверку и на другие триггеры)
import hudson.model.Hudson
import hudson.model.Project
import hudson.triggers.TimerTrigger
import hudson.triggers.Trigger
import hudson.triggers.TriggerDescriptor
//All the projects on which we can apply the getBuilders method
def allProjects = Hudson.instance.items.findAll { it instanceof Project }
def projectsToWorkOn = [];
allProjects.each { Project project ->
Map<TriggerDescriptor, Trigger> triggers =
project.getTriggers();
triggers.each { trigger ->
if (trigger.value instanceof TimerTrigger) {
projectsToWorkOn.push(project)
}
}
}
projectsToWorkOn
.each { Project project ->
project.disable();
project.save()
}