2017-09-18 18 views
1

私はJenkins宣言型パイプラインを使ってユーザ入力パラメータの例を探しましたが、すべての例ではスクリプト化されたパイプラインが使用されています。ここで私が働いて取得しようとしているコードのサンプルです:Jenkins宣言型パイプライン - ユーザ入力パラメータ

pipeline { 
    agent any 

    stages { 
     stage('Stage 1') { 
      steps { 
       input id: 'test', message: 'Hello', parameters: [string(defaultValue: '', description: '', name: 'myparam')] 
       sh "echo ${env}" 
      } 
     } 
    } 
} 

私は誰かが私を助けることができれば、それは素晴らしいことだ、私はMYPARAM変数にアクセスする方法を動作するように見えることはできません。 おかげ

+0

あなたの問題を解決した場合、私の答えを受け入れることができれば幸いです。 –

答えて

4

入力を使用して、世界的なパイプラインレベルでエージェントなしを使用せず、個々の段階にエージェントを割り当てることが非常に重要です。 入力プロシージャを別のステージに入れて、エージェントなしのも使用します。入力ステージにエージェントノードを割り当てると、そのエージェントエグゼキュータは、ユーザーがビルドプロセスを続行または中止するまで、このビルドによって予約されたままになります。

この例では、入力を使用して助ける必要があります。それだけ返すために、単一のパラメータを持っている場合

def approvalMap    // collect data from approval step 

pipeline { 
    agent none 

    stages { 
     stage('Stage 1') { 
      agent none 
      steps { 

       timeout(60) {    // timeout waiting for input after 60 minutes 
        script { 
         // capture the approval details in approvalMap. 
         approvalMap = input id: 'test', message: 'Hello', ok: 'Proceed?', parameters: [choice(choices: 'apple\npear\norange', description: 'Select a fruit for this build', name: 'FRUIT'), string(defaultValue: '', description: '', name: 'myparam')], submitter: 'user1,user2,group1', submitterParameter: 'APPROVER' 
        } 
       } 
      } 
     } 
     stage('Stage 2') { 
      agent any 

      steps { 
       // print the details gathered from the approval 
       echo "This build was approved by: ${approvalMap['APPROVER']}" 
       echo "This build is brought to you today by the fruit: ${approvalMap['FRUIT']}" 
       echo "This is myparam: ${approvalMap['myparam']}" 
      } 
     } 
    } 
} 

入力機能のリターンを、それが直接その値を返します。入力に複数のパラメータがある場合、値のマップ(ハッシュ、ディクショナリ)を返します。この値を取得するには、Groovyスクリプトに移行する必要があります。

入力コードをタイムアウトステップでラップして、ビルドが未解決の状態に長時間残らないようにすることをお勧めします。

+0

これはあなたの問題に役立ちましたか? –

関連する問題