Jenkinsパイプラインで、実行時にインタラクティブな入力を提供するオプションをユーザーに提供したいと考えています。 groovyスクリプトでユーザー入力をどのように読み取ることができるかを理解したいと思います。サンプルコードで私たちを支援するためのリクエスト:
私は次のドキュメントを参照しています: https://jenkins.io/doc/pipeline/steps/pipeline-input-step/
編集-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'])
しかし、これらのパラメーターをファイルに書き込んだり、変数に割り当てたりすることはできません。どうすればこれを達成できますか?
変数とファイルに保存するには、持っているものに基づいて次のようなものを試してください:
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'
}
}
}
}
}
これはinput()の使用法の最も簡単な例です。
[続行]または[中止]をクリックするまで、ジョブは一時停止状態のユーザー入力を待ちます。
pipeline {
agent any
stages {
stage('Input') {
steps {
input('Do you want to proceed?')
}
}
stage('If Proceed is clicked') {
steps {
print('hello')
}
}
}
}
パラメータのリストを表示し、ユーザーが1つのパラメータを選択できるようにする、より高度な使用法があります。選択に基づいて、Groovyロジックを記述して、続行し、QAまたはプロダクションにデプロイできます。
次のスクリプトは、ユーザーが選択できるドロップダウンリストをレンダリングします
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
}
}
}
StringParameterDefinition
、TextParameterDefinition
またはBooleanParameterDefinition
や、リンクに記載されているその他の多くも使用できます
ソリューション:jenkinsパイプラインでユーザー入力を変数として設定、取得、およびアクセスするには、ChoiceParameterDefinitionを使用してアタッチする必要があります簡単に動作するスニペット:
script {
// Define Variable
def USER_INPUT = input(
message: 'User input required - Some Yes or No question?',
parameters: [
[$class: 'ChoiceParameterDefinition',
choices: ['no','yes'].join('\n'),
name: 'input',
description: 'Menu - select box option']
])
echo "The answer is: ${USER_INPUT}"
if( "${USER_INPUT}" == "yes"){
//do something
} else {
//do something else
}
}