将Jenkins管道中的交互式输入读取到变量 [英] Read interactive input in Jenkins pipeline to a variable
问题描述
在Jenkins管道中,我想向用户提供一个选项,以便在运行时提供交互式输入.我想了解我们如何读取groovy脚本中的用户输入.请求帮助我们提供示例代码:
In a Jenkins pipeline, i want to provide an option to the user to give an interactive input at run time. I want to understand how can we read the user input in the groovy script. Request to help we with a sample code:
我指的是以下文档: https://jenkins.io/doc/pipeline/steps/pipeline-input -step/
I'm referring to following documentation: https://jenkins.io/doc/pipeline/steps/pipeline-input-step/
EDIT-1:
经过一些试验后,我可以正常工作了:
After some trials i've got this working:
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'])
}
}
}
}
}
在此示例中,我能够回显(打印)用户输入的参数:
In this example i'm able to echo (print) the user input parameters:
echo ("IQA Sheet Path: "+userInput['Config'])
echo ("Test Info file path: "+userInput['Test'])
但是我无法将这些参数写入文件或将它们分配给变量.我们怎样才能做到这一点?
but I'm not able to write these parameters to a file or assign them to a variable. How can we achieve this?
推荐答案
要保存到变量和文件中,请根据实际情况尝试以下操作:
For saving to variables and a file, try something like this based on what you had:
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'
}
}
}
}
}
这篇关于将Jenkins管道中的交互式输入读取到变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!