pipeline de jenkins: agente vs nó?

134

Qual é a diferença entre um agente e um em um pipeline de jenkins?

Eu encontrei essas definições:

  • : a maioria do trabalho que um Pipeline realiza é feita no contexto de uma ou mais etapas declaradas do nó.
  • agent : A diretiva agent especifica onde o Pipeline inteiro, ou um estágio específico, será executado no ambiente Jenkins, dependendo de onde a diretiva agent for colocada.

Portanto, ambos são usados ​​para executar as etapas do pipeline. Mas quando usar qual?

Matthias M
fonte

Respostas:

145

A resposta simples é: o agente é para pipelines declarativos e o é para pipelines com script .

Em pipelines declarativos, a diretiva agent é usada para especificar em qual agente / escravo o job / tarefa deve ser executado. Esta diretiva permite especificar apenas onde a tarefa deve ser executada, qual agente, escravo, rótulo ou imagem do docker.

Por outro lado, em pipelines com script, a etapa do pode ser usada para executar um script / etapa em um agente específico, etiqueta, escravo. A etapa do opcionalmente leva o nome do agente ou do rótulo e, em seguida, um fechamento com o código a ser executado nesse nó.

pipelines declarativos e com script (editar com base no comentário):

  • pipelines declarativos é uma nova extensão do DSL do pipeline (é basicamente um script de pipeline com apenas uma etapa, uma etapa do pipeline com argumentos (chamados diretivas), essas diretivas devem seguir uma sintaxe específica. mais rigoroso e, portanto, deve ser mais fácil para os novatos em pipelines, permitir edição gráfica e muito mais.
  • pipelines com script é o substituto para requisitos avançados.
Jon S
fonte
5
Sim e nenhum pipelines declarativo é uma nova extensão do DSL do pipeline (é basicamente um script de pipeline com apenas uma etapa, uma etapa do pipeline com argumentos (chamados diretivas), essas diretivas devem seguir uma sintaxe específica. que é mais rigoroso e, portanto, deve ser mais fácil para os novatos em pipelines, permitir edição gráfica e muito mais, consulte a lista de recursos no seu link acima.Portanto, para tarefas simples, diria que é a abordagem recomendada, mas para mais avançadas casos, com script é o fallback.
Jon S
6
Agora há 3 nomes com node, agente slave!
Mkobit
2
@mkobit Sim, os nomes são bastante confusos, eu li em algum lugar (não consigo encontrar a referência agora, seja no blog Jenkins ou no Jenkins JIRA), que eles estão tentando renomear e usar agente em vez de escravo, pois é não como uma palavra "negativa". Então eu acho que os pipelines declarativos adotaram isso e o chamaram de agente. Eu acho que o nó se origina de pipelines com script.
21716 Jon
1
@DenCowboy Ah, sim, eu diria que a quarta melhor prática lá se aplica apenas ao pipeline com script, já que o declarativo sempre aloca um nó, a diretiva do agente restringe apenas o nó que está alocado.
Jon S
1
@DenCowboy Não, deve usar o mesmo, basta usar a diretiva agent para determinar inicialmente qual agente / escravo usar.
Jon S