Дженкинс конвейер: агент против узла?

134

В чем разница между агентом и узлом в конвейере Дженкинса?

Я нашел эти определения:

  • узел : большая часть работы, которую выполняет конвейер, выполняется в контексте одного или нескольких объявленных шагов узла.
  • agent : директива агента указывает, где будет выполняться весь конвейер или конкретный этап в среде Jenkins, в зависимости от того, где размещена директива агента.

Таким образом, оба используются для выполнения шагов конвейера. Но когда использовать какой?

Маттиас М
источник

Ответы:

145

Простой ответ: агент предназначен для декларативных конвейеров, а узел - для конвейеров со сценариями .

В декларативных конвейерах директива агента используется для указания, на каком агенте / ведомом устройстве должно выполняться задание / задача. Эта директива позволяет только указать, где должна выполняться задача, какой агент, ведомое устройство, метка или образ докера.

С другой стороны, в скриптовых конвейерах шаг узла может использоваться для выполнения скрипта / шага на конкретном агенте, метке, подчиненном устройстве. Узел шаг необязательно принимает агент или этикетку имя , а затем замыкание с кодом , который должен быть выполнен на этом узле.

декларативные и скриптовые конвейеры (редактировать на основе комментария):

  • декларативные конвейеры - это новое расширение конвейерного DSL (это, по сути, конвейерный сценарий с одним шагом, шаг конвейера с аргументами (называемыми директивами), эти директивы должны следовать определенному синтаксису. Суть этого нового формата в том, что это более строгий и, следовательно, должен быть более легким для новичков в конвейерах, допускать графическое редактирование и многое другое.
  • сценарии конвейеров - это запасной вариант для дополнительных требований.
Джон С
источник
5
Да, и никаких декларативных конвейеров - это новое расширение конвейерного DSL (это, по сути, конвейерный скрипт с одним шагом, шаг конвейера с аргументами (называемыми директивами), эти директивы должны следовать определенному синтаксису. Суть этого нового формата заключается в что он более строгий и поэтому должен быть проще для тех, кто плохо знаком с конвейерами, допускает графическое редактирование и многое другое, см. список функций по вашей ссылке выше. Поэтому для простой задачи я бы сказал, что это рекомендуемый подход, но для более продвинутых случаев, сценарий - это запасной вариант.
Джон С.
6
В настоящее время существует 3 названия с node, agentи slave!
mkobit
2
@mkobit Да, имена довольно запутанные, я где-то читал (не могу найти ссылку прямо сейчас, либо это было в блоге Jenkins, либо в Jenkins JIRA), что они пытаются переименовать и использовать агент вместо ведомого, поскольку он не как «отрицательное» слово. Затем я предполагаю, что декларативные конвейеры приняли это и назвали агентом. Я думаю, что узел происходит из скриптовых конвейеров.
Jon S
1
@DenCowboy Ага, да, я бы сказал, что 4-я передовая практика применима только к конвейеру со сценариями, поскольку декларативная всегда выделяет узел, а директива агента ограничивает только выделенный узел.
Jon S
1
@DenCowboy Нет, он должен использовать то же самое, он просто использует директиву агента, чтобы изначально определить, какой агент / ведомое устройство использовать.
Jon S