1

Jenkinsマスターとスレーブノードのプールがあります(負荷に基づいて動的に拡大縮小します)。マスターノードは「マスター」と呼ばれ、スレーブは名前のためのガイドを持っています。現在、どのノードにもラベルがありません。Jenkins宣言型パイプライン - gitブランチに基づいてノード(エージェント)を動的に選択します。

私のプロジェクトでは、githubの「開発」ブランチをマスターノード上に構築し、要求ブランチをプルしてスレーブのいずれかをビルドします。これは、ノード( 'マスター')とノード( '!マスター')を使用してスクリプト化されたパイプラインで正常に機能しています。

パイプラインの新しい宣言スタイルの使用を開始したいと思います。現在、ブランチ名に基づいて宣言パイプラインで同じ「マスター」と「マスターではない」動作を実現することは可能ですか?スクリプトのパイプラインで

、それは次のようになります。

def selectedNode = BRANCH_NAME == 'develop' ? 'master' : '!master' 

node(selectedNode) { 
} 

おかげ

答えて

1

それはスクリプトで動作するかどうか、あなたは一般的に、宣言パイプラインのscriptステップ内の正確な同じ内容を含めることができます。これは私のために動作します:私はおそらく、むしろトップレベルagent宣言でfutzingよりもこのルートを行くと思い

pipeline { 
    agent { label 'docker' } 
    stages { 
    stage('build') { 
     steps { 
     script { 
      def selectedNode = BRANCH_NAME == 'develop' ? 'master' : '!master' 

      node(selectedNode) { 
      } 
     } 
     } 
    } 
    } 
} 

関連する問題