我创建了一个参数化的 Jenkins 作业,它有两个主动选择的参数,第二个是反应性的(取决于第一个参数)。每个参数都使用 Groovy 脚本来生成它们的选择值。
问题是,每当作业失败时,这些参数就会更改或恢复为字符串参数。
您可以从图像中检查: 作业失败之前: 作业失败之前 作业失败后: 作业失败后
有关信息,管道如下:
pipeline {
agent any
parameters {
string(name: 'Repository', defaultValue: '')
string(name: 'Branch', defaultValue: '')
}
stages {
stage('Input Validation') {
steps {
script {
if (!params.Repository || !params.Branch) {
error "Repository and Branch parameters must be selected!"
}
}
}
}
}
}
我使用了 Active Choices Jenkins Plugin 2.8.1 和 2.8.6,两者具有相同的行为。
可能是什么问题?
我尝试使用 Scriptler,而不是直接在 jenkins 作业配置中使用 groovy 脚本,但它有同样的问题。
当您在 Jenkinsfile 中定义参数,然后运行作业(即执行该 Jenkinsfile)时,Jenkinsfile 中定义的参数将覆盖您在作业配置中手动执行的任何操作。
因为在 Jenkinsfile 中参数定义为
string(name: 'Repository', defaultValue: '')
string(name: 'Branch', defaultValue: '')
这解释了为什么作业运行后,参数是...字符串。
顺便说一句,无论作业成功还是失败,这种情况都会发生——需要的是它只是运行。
相反,尝试将参数定义为主动选择:
parameters {
activeChoice(
name: 'Repository',
choiceType: 'PT_CHECKBOX',
description: 'Choose repository to create the tool from',
filterable: false,
script: [
$class: 'GroovyScript',
fallbackScript: [
classpath: [],
sandbox: false,
script: '''return[""]''' ],
script: [
script: '''return["bitbucket-scripts",]''',
classpath: [],
sandbox: false,
]
]),
等等