在jenkinsil中将gstringimpl转换为java.lang.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

类org.codehaus.groovy.runtime.GStringImpl

8.4.7.8

构建主分支

不要使用字符串插值来解析参数。而是直接访问它,像params.PARAM_NAME,下面的例子。

script{
      def version_list1 = ['8.4.7.8','8.3.7.9','8.5.4.7']                    
      if (version_list1.contains(params.Version)){
              println("build version branch")
      } else {
          println("build master branch")                            
      }
}

相关内容

  • 没有找到相关文章

最新更新