我有一个接受持久字符串参数输入的管道。然后管道检查参数值是否存在于列表中。
问题是持久化的 string 是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
在运行时环境中运行的代码
8.4.7.8
java.lang.string
建立主分支
1条答案
按热度按时间doinxwow1#
不要使用字符串插值来解析参数。而是直接访问它,如
params.PARAM_NAME
,如下所示。