jenkinsパイプライン:エージェントvsノード?


134

jenkinsパイプラインのエージェントノードの違いは何ですか?

私はそれらの定義を見つけました:

  • node:Pipelineが実行するほとんどの作業は、宣言された1つ以上のノードステップのコンテキストで行われます。
  • エージェント:エージェントディレクティブは、パイプライン全体または特定のステージが、エージェントディレクティブが配置されている場所に応じてJenkins環境で実行される場所を指定します。

したがって、どちらもパイプラインステップの実行に使用されます。しかし、いつどれを使用するのですか?

回答:


145

簡単な答えは、エージェント宣言型パイプライン用で、ノードスクリプトパイプライン用です。

宣言的パイプラインでは、エージェントディレクティブを使用して、ジョブ/タスクを実行するエージェント/スレーブを指定します。このディレクティブでは、タスクを実行する場所、エージェント、スレーブ、ラベル、またはDockerイメージを指定することのみが可能です。

一方、スクリプトパイプラインでは、ノードステップを使用して、特定のエージェント、ラベル、スレーブでスクリプト/ステップを実行できます。ノードのステップは、必要に応じて薬剤またはラベル名と、そのノード上で実行されるコードで、次いでクロージャをとります。

宣言的でスクリプト化されたパイプライン(コメントに基づいて編集):

  • 宣言型パイプラインは、パイプラインDSLの新しい拡張機能です(基本的には、1つのステップのみのパイプラインスクリプト、引数付きのパイプラインステップ(ディレクティブと呼ばれます)。これらのディレクティブは、特定の構文に従う必要があります。この新しい形式のポイントは、より厳密で、したがって、パイプラインの初心者にとってはより簡単であり、グラフィカルな編集などが可能になります。
  • スクリプトパイプラインは、高度な要件のフォールバックです。

5
はい、いいえ宣言パイプラインはパイプラインDSLの新しい拡張です(これは基本的に、1つのステップのみのパイプラインスクリプト、引数付きのパイプラインステップ(ディレクティブと呼ばれます)。これらのディレクティブは特定の構文に従う必要があります。この新しい形式のポイントはそれはより厳密であり、そのためパイプラインの初心者にとってより簡単であり、グラフィカルな編集などが可能です。上記のリンクの機能リストを参照してください。簡単なタスクについては、これが推奨されるアプローチですが、より高度なケースは、スクリプト化されたフォールバックです
Jon S

6
今、そこでの3名はnodeagentslave
mkobit 2017

2
@mkobitはい、名前はかなり混乱しています。どこかで読んだところです(現在、参照がJenkinsブログまたはJenkins JIRAにありません)。名前を変更して、スレーブではなくエージェントを使用しようとしているため、 「否定的な」言葉としてではありません。次に、宣言型パイプラインがそれを採用し、それをエージェントと呼んだと思います。ノードはスクリプトパイプラインから発生していると思います。
ジョンS

1
@DenCowboyあ、そうです。4番目のベストプラクティスは、宣言型のノードが常に割り当てられるため、スクリプトパイプラインにのみ適用され、エージェントディレクティブは割り当てられるノードを制限するだけです。
Jon S、

1
@DenCowboyいいえ、同じように使用する必要があります。エージェントディレクティブを使用して、使用するエージェント/スレーブを最初に決定します。
ジョンS
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.