我正在尝试运行一个脚本,该脚本实例化扩展选择参数变量以在声明性的jenkinsfile属性部分中使用它,但是我一直没有一步就无法在jenkinsfile中运行脚本。我不想将其作为输入步骤或脚本管道进行。
所以我正在运行它,首先执行一个节点步骤,然后执行管道步骤,如下所示:
import com.cwctravel.hudson.plugins.extended_choice_parameter.ExtendedChoiceParameterDefinition
node('MyServer') {
try {
def multiSelect = new ExtendedChoiceParameterDefinition(...)
properties([ parameters([ multiSelect ]) ])
}
catch(error){
echo "$error"
}
}
pipeline {
stages {
....
}
}
神奇地有效!警告,只有在我之前仅使用管道块运行过构建的情况下。
那么,有没有更好的方法可以在管道中运行以前的脚本?能够在嵌入脚本块的步骤之外为属性或其他位置创建对象?
答案 0 :(得分:1)
我宁愿去parameters block in pipeline。
parameters指令提供了用户可以使用的参数列表 应在触发管道时提供。这些的值 用户指定的参数可通过 params对象,请参见示例以了解其具体用法。
pipeline {
agent any
parameters {
string(name: 'PERSON', defaultValue: 'Mr Jenkins', description: 'Who should I say hello to?')
text(name: 'BIOGRAPHY', defaultValue: '', description: 'Enter some information about the person')
booleanParam(name: 'TOGGLE', defaultValue: true, description: 'Toggle this value')
choice(name: 'CHOICE', choices: ['One', 'Two', 'Three'], description: 'Pick something')
password(name: 'PASSWORD', defaultValue: 'SECRET', description: 'Enter a password')
file(name: "FILE", description: "Choose a file to upload")
}
stages {
stage('Example') {
steps {
echo "Hello ${params.PERSON}"
echo "Biography: ${params.BIOGRAPHY}"
echo "Toggle: ${params.TOGGLE}"
echo "Choice: ${params.CHOICE}"
echo "Password: ${params.PASSWORD}"
}
}
}
}