Jenkins Pipeline: Agent kontra Węzeł?

140

Jaka jest różnica między agentem a węzłem w potoku Jenkinsa?

Znalazłem te definicje:

  • węzeł : Większość pracy, którą wykonuje potok, jest wykonywana w kontekście jednego lub więcej zadeklarowanych kroków węzła.
  • agent : Dyrektywa agenta określa, gdzie cały potok lub określony etap zostanie wykonany w środowisku Jenkins w zależności od tego, gdzie jest umieszczona dyrektywa agenta.

Więc oba są używane do wykonywania kroków potoku. Ale kiedy użyć którego?

Matthias M.
źródło

Odpowiedzi:

152

Prosta odpowiedź brzmi: Agent jest przeznaczony do potoków deklaratywnych, a węzeł do potoków skryptowych .

W potokach deklaratywnych dyrektywa agenta służy do określenia, na którym agencie / podrzędnym zadanie / zadanie ma zostać wykonane. Ta dyrektywa pozwala tylko określić, gdzie zadanie ma zostać wykonane, który agent, slave, etykieta lub obraz dockera.

Z drugiej strony, w potokach skryptowych krok węzła może być użyty do wykonania skryptu / kroku na określonym agencie, etykiecie, podrzędnym. Węzeł etap ewentualnie wykonuje agentowi lub etykieta, a następnie zamknięcie z kodu, który ma być wykonany z tego węzła.

potoki deklaratywne i skryptowane (edycja na podstawie komentarza):

  • deklaratywne potoki to nowe rozszerzenie potoku DSL (w zasadzie jest to skrypt potoku z tylko jednym krokiem, krokiem potoku z argumentami (zwanymi dyrektywami). Te dyrektywy powinny mieć określoną składnię. Celem tego nowego formatu jest bardziej rygorystyczne i dlatego powinny być łatwiejsze dla nowych użytkowników potoków, umożliwić edycję graficzną i wiele więcej.
  • Potoki skryptowe są rezerwą dla zaawansowanych wymagań.
Jon S.
źródło
5
Tak i nie deklaratywne potoki są nowym rozszerzeniem potoku DSL (jest to w zasadzie skrypt potoku z tylko jednym krokiem, krokiem potoku z argumentami (zwanymi dyrektywami), te dyrektywy powinny mieć określoną składnię. Celem tego nowego formatu jest że jest bardziej rygorystyczny i dlatego powinien być łatwiejszy dla tych, którzy są nowicjuszami w potokach, pozwalać na edycję graficzną i wiele więcej, zobacz listę funkcji pod linkiem powyżej. W przypadku prostego zadania powiedziałbym, że jest to zalecane podejście, ale dla bardziej przypadki, scenariusz jest rozwiązaniem awaryjnym
Jon S,
6
Obecnie istnieją 3 z nazwy node, agenti slave!
mkobit
2
@mkobit Tak, nazwy są dość zagmatwane, przeczytałem gdzieś (nie mogę znaleźć odniesienia w tej chwili, było to na blogu Jenkinsa lub na Jenkins JIRA), że próbują zmienić nazwę i użyć agenta zamiast slave nie jako „negatywne” słowo. Wtedy domyślam się, że potoki deklaratywne przyjęły to i nazwały to agentem. Myślę, że węzeł pochodzi ze skryptowych potoków.
Jon S,
1
@DenCowboy Aha, tak, powiedziałbym, że czwarta najlepsza praktyka ma zastosowanie tylko do potoku skryptowego, ponieważ deklaratywne zawsze przydzielaj węzeł, dyrektywa agenta ogranicza tylko przydzielony węzeł.
Jon S
1
@DenCowboy Nie, powinno używać tego samego, po prostu użyj dyrektywy agenta, aby wstępnie określić, którego agenta / niewolnika użyć.
Jon S