Могу ли я отключить автоматические запланированные сборки Hudson сразу?

StackOverflow https://stackoverflow.com/questions/1299180

Вопрос

У нас есть большая система Hudson, на которой постоянно выполняется множество запланированных сборок.В настоящее время я пытаюсь заставить одну сборку работать должным образом, но иногда мне приходится ждать, когда запланированная сборка попадет в очередь.Есть ли способ отключить все запланированные сборки, чтобы я мог сосредоточиться на своей проблемной сборке, не изменяя настройки "cron" для каждой отдельной сборки?

Это было полезно?

Решение

Скажите ему, чтобы он приготовился к отключению.


Редактировать из OP (банджолити)
Это не идеально, но я думаю, что это разумное решение типа "несколько щелчков мыши с установкой по умолчанию", отсюда и принятый ответ.

  1. Поставить задание в очередь
  2. Скажите Хадсону, чтобы он приготовился к отключению.Это предотвращает выполнение других заданий в то же время.
  3. Диагностировать ошибки в моей работе, фиксировать новый код, который мог бы исправь это.(Я люблю свою работу).
  4. Отмените закрытие Хадсона.
  5. Переходим к шагу 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()
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top