2017-11-02 26 views
0

に読み込むJenkinsパイプラインでは、実行時に対話型入力をユーザーに与えるオプションを提供したいと考えています。私はgroovyスクリプトでユーザ入力をどのように読むことができるのか理解したい。Jenkinsパイプラインの対話型入力を変数

私は次のドキュメントを参照しています: https://jenkins.io/doc/pipeline/steps/pipeline-input-step/

EDIT-1:

pipeline { 
    agent any 

    stages { 

     stage("Interactive_Input") { 
      steps { 
       script { 
       def userInput = input(
       id: 'userInput', message: 'Enter path of test reports:?', 
       parameters: [ 
       [$class: 'TextParameterDefinition', defaultValue: 'None', description: 'Path of config file', name: 'Config'], 
       [$class: 'TextParameterDefinition', defaultValue: 'None', description: 'Test Info file', name: 'Test'] 
       ]) 
       echo ("IQA Sheet Path: "+userInput['Config']) 
       echo ("Test Info file path: "+userInput['Test']) 

       } 
      } 
     } 
    } 
} 
:いくつかの試行後

私はこの作業を持っている要求は、サンプルコードで、私たちを助けるために

この例では、ユーザ入力パラメータをエコー(印刷)できます。

echo ("IQA Sheet Path: "+userInput['Config']) 
echo ("Test Info file path: "+userInput['Test']) 

しかし、これらのパラメータをファイルに書き込んだり、変数に割り当てることができません。どうすればこれを達成できますか?

+0

現在のコードを表示してください。少なくともベーシック版を用意するのは難しいことではないでしょうか? – StephenKing

答えて

0

これはinput()の使用法の最も単純な例です。

  • ステージビューでは、最初のステージに移動すると「続行しますか?」という質問が表示されます。
  • ジョブの実行時にコンソール出力にも同様の注意が表示されます。

[続行]または[中止]をクリックするまで、ジョブは一時停止状態でユーザー入力を待機します。

pipeline { 
    agent any 

    stages { 
     stage('Input') { 
      steps { 
       input('Do you want to proceed?') 
      } 
     } 

     stage('If Proceed is clicked') { 
      steps { 
       print('hello') 
      } 
     } 
    } 
} 

さらに高度な用途があり、パラメータのリストを表示し、1つのパラメータを選択できます。この選択に基づいて、グルーヴィーロジックを書いて、QAまたはプロダクションに展開して展開することができます。変数に保存するためにあなたのリンク

+0

詳細な説明はありません。元の質問の私のEDIT-1を参照してください。私は変数にユーザー入力を割り当てたり、ファイルに書きたいと思っています。どうすればこれを達成できますか? – Yash

+0

ユーザー入力を変数に代入するとどうなりますか? 'def variable = userInput ['config']' – dot

0

で述べたように

は、次のスクリプトは、あなたがまたStringParameterDefinitionTextParameterDefinitionまたはBooleanParameterDefinitionや他の多くを使用することができ、ユーザは

stage('Wait for user to input text?') { 
    steps { 
     script { 
      def userInput = input(id: 'userInput', message: 'Merge to?', 
      parameters: [[$class: 'ChoiceParameterDefinition', defaultValue: 'strDef', 
       description:'describing choices', name:'nameChoice', choices: "QA\nUAT\nProduction\nDevelop\nMaster"] 
      ]) 

      println(userInput); //Use this value to branch to different logic if needed 
     } 
    } 

} 

を選択できるドロップダウンリストをレンダリングあなたが持っていたものに基づいてこのようなものを試してみてください:

pipeline { 

    agent any 

    stages { 

     stage("Interactive_Input") { 
      steps { 
       script { 

        // Variables for input 
        def inputConfig 
        def inputTest 

        // Get the input 
        def userInput = input(
          id: 'userInput', message: 'Enter path of test reports:?', 
          parameters: [ 

            string(defaultValue: 'None', 
              description: 'Path of config file', 
              name: 'Config'), 
            string(defaultValue: 'None', 
              description: 'Test Info file', 
              name: 'Test'), 
          ]) 

        // Save to variables. Default to empty string if not found. 
        inputConfig = userInput.Config?:'' 
        inputTest = userInput.Test?:'' 

        // Echo to console 
        echo("IQA Sheet Path: ${inputConfig}") 
        echo("Test Info file path: ${inputTest}") 

        // Write to file 
        writeFile file: "inputData.txt", text: "Config=${inputConfig}\r\nTest=${inputTest}" 

        // Archive the file (or whatever you want to do with it) 
        archiveArtifacts 'inputData.txt' 
       } 
      } 
     } 
    } 
} 
関連する問題