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?

Foi útil?

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.

  1. Queue-se um trabalho
  2. Diga Hudson para preparar a encerrar. Isso evita que outros trabalhos que estão sendo executados no mesmo período.
  3. falhas Diagnose com o meu trabalho, cometer novo código que pode corrigi-lo. (Eu amo meu trabalho).
  4. Cancelar Hudson desligado.
  5. 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 tem um elemento chamado desativado que você poderia atualizar a verdade, desabilitando assim que construir.

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()
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top