Posso desativar programada automática de Hudson constrói tudo de uma vez?
-
18-09-2019 - |
Pergunta
Temos uma grande Hudson configurado com muitos agendada compilações rodando o tempo todo. Atualmente eu estou tentando obter uma criação funcionar corretamente, mas eu tenho que esperar ocasionalmente quando uma compilação agendada entra na fila. Existe uma maneira de desativar todo o programado constrói para que eu possa me concentrar no meu construir problemático, sem ajustar as configurações de "cron" de cada construção individual?
Solução
Diga-lhe para se preparar para desligar.
Editar OP (banjollity)
Não é perfeito, mas acho que este é um razoável "poucos solução cliques do mouse com uma instalação padrão" tipo de solução, portanto, a resposta aceita.
- Queue-se um trabalho
- Diga Hudson para preparar a encerrar. Isso evita que outros trabalhos que estão sendo executados no mesmo período.
- falhas Diagnose com o meu trabalho, cometer novo código que pode corrigi-lo. (Eu amo meu trabalho).
- Cancelar Hudson desligado.
- Goto etapa 1.
Outras dicas
O 'configuração fatiamento' plugin que eu contribuiu permite você modificar as configurações de cron de muitos trabalhos simultaneamente. Isso deve permitir que você faça a maior alterações desejadas.
Expandindo a sugestão de Mikezx6r, eu só vim com um método rápido para desativar todas as compilações combinando uma certa string:
[user@server jobs] $ for i in *build_name*; do sed -i s/"disabled>false"/"disabled>true/" $i/config.xml; done
Você também poderia iterate através de nomes de compilação específica no "para" loop:
[user@server jobs] $ for i in build1 build2 build3; do sed -i s/"disabled>false"/"disabled>true/" $i/config.xml; done
Você pode testá-lo primeiro para ver o que ele vai fazer, colocando um "eco" antes sed:
[user@server jobs] $ for i in build1 build2 build3; do echo sed -i s/"disabled>false"/"disabled>true/" $i/config.xml; done
Por outro lado, você pode reativar todas as tarefas correspondentes por comutação em todo o script sed:
[user@server jobs] $ for i in build1 build2 build3; do sed -i s/"disabled>true"/"disabled>false/" $i/config.xml; done
Eu não vejo uma maneira direta de fazer isso, mas você poderia escrever algo que atualiza o config.xml para todos os trabalhos.
No diretório de cada trabalho em Hudson, há uma config.xml. O
Não é o ideal, mas uma vez que você tem o script para andar um diretório e alterar o valor de desativado, você sempre pode usá-lo.
A busca por algo semelhante me trouxe a esta pergunta, e eu percebi que há um outro benefício de resposta de Michael Donohue (eo plugin ele contribuiu).
Com "Configuração fatiamento," é fácil de desativar um subconjunto de seus empregos de uma só vez. Isso é exatamente o que eu precisava desativar temporariamente a 7 de 8 postos de trabalho relacionados para que eu pudesse trabalhar no dia 8. Graças Michael!
Isto pode ser feito usando Jenkins Console. Ele é executado de script Groovy e fazer quase qualquer coisa.
A seguir roteiro itera através de todos os projetos. Verifique se ele tem TimerTrigger. (Pode-se estender esta verificação de outros gatilhos também)
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()
}