【发布时间】:2022-11-12 17:13:26
【问题描述】:
我有一个接受持久字符串参数输入的管道。然后管道检查参数值是否存在于列表中。
问题是坚持细绳是gstringimpl 类型,列表项是java.lang.string 类型。当我使用.contains() 方法时,即使值在列表中,它也不会返回true,我认为这是由于不同的数据类型。
我已经在网上尝试了所有方法,包括 toString() 方法,但我无法让它工作。我在下面附上我的代码。
String ver = ""
pipeline {
agent {
docker{
image 'registry/abc/builder:0.1.5'
args '-t -d -v maven-m2-cache:/home/node/.m2'
}
}
parameters {
persistentString(name: 'Version', defaultValue: '8.4.7.8', description: 'Version to build', successfulOnly: false)
}
stages {
stage('Analyze Parameter'){
steps{
script{
ver = "${Version}".toString()
}
}
}
stage('Build'){
steps{
script{
def version_list1 = ['8.4.7.8','8.3.7.9','8.5.4.7']
if (version_list1.contains("${ver}")){
println("build version branch")
} else {
println("${ver}")
println("${ver}".getClass())
println(version_list1[0])
println(version_list1[0].getClass())
println("build master branch")
}
}
}
}
}
}
管道总是进入 else 块并打印以下内容:
8.4.7.8
类 org.codehaus.groovy.runtime.GStringImpl
8.4.7.8
java.lang.string
建立主分支
【问题讨论】:
标签: jenkins groovy jenkins-pipeline jenkins-groovy jenkins-declarative-pipeline