Diga ao Jenkins para executar um projeto específico em um nó escravo específico

87

Como digo ao Jenkins para executar um projeto específico em um escravo específico?

Eu configurei um nó mestre Jenkins e um nó escravo que quero usar para preparar um aplicativo. Mas não consigo descobrir como configurar o projeto para executar no nó escravo que criei.

Lorin Hochstein
fonte

Respostas:

84

Defina a caixa de seleção "Restringir onde este trabalho pode ser executado" na configuração do seu trabalho e especifique o nome do seu escravo.

Se você adicionar mais escravos posteriormente, poderá definir rótulos para cada escravo e especificá-los nas configurações de seu trabalho.

Consulte esta documentação de referência:

gareth_bowles
fonte
Obrigado. Eu usei um bom tempo antes de encontrar sua resposta. Deveria ter sido adicionado a esta página wiki.jenkins-ci.org/display/JENKINS/Distributed+builds
Surasin Tancharoen
16

Se você estiver executando um trabalho de Pipeline, primeiro adicione um rótulo (por exemplo, 'escravo') ao nó escravo (ou agente, como parece ser chamado agora).

Em seguida, no script de pipeline, você especifica o rótulo em que o trabalho é executado:

Pipeline declarativo:

pipeline {
    agent {label 'slave'}
    stages {
        ...
    }
}

Pipeline com script:

node (label: 'slave') {
    ...
}

Este trabalho agora será executado em qualquer nó com o rótulo 'escravo'. Se você deseja que o trabalho seja executado apenas neste escravo específico, não reutilize a etiqueta. E é claro que o rótulo não precisa ser "escravo"; pode ser o que você quiser.

Atualizar:

No pipeline com script, se o seu nó se chama "Meu Nó", você também pode fazer isso:

node ('My Node') {
    ...
}

Se você deseja apenas que o bloco de código seja executado nesse nó específico, isso é útil. No entanto, o uso de rótulos é mais flexível e pode facilitar a adição de nós para compartilhar a carga de trabalho.

jpyams
fonte
Isso foi tão difícil de encontrar, a documentação para a sintaxe com script está morrendo a favor do declarativo, ainda não posso migrar, então obrigado!
Mitchell Currie
7

Se você deseja usar Nó / Etiqueta como parâmetro, instale o Plug-in de Parâmetro NodeLabel

Alex Okrushko
fonte
Observe que, se você escolher o parâmetro "Nó" para um trabalho e quiser chamá-lo no Groovy, precisará criar um parâmetro especial: params += new org.jvnet.jenkins.plugins.nodelabelparameter.LabelParameterValue('testServer', testServerLabel);(em vez do habitual StringParameterValue).
Nux