artifactVersion = getVersion('build.gradle')

println artifactVersion[enter image description here][1]

def getVersion(String fileName) {
      readFile(env.WORKSPACE+"/"+fileName).split("\n").each { line ->
          if ((line =~ /version (.*)/).count > 0) {
            echo line
            def m = (line =~ /version (.*)/)[0]
            echo m[1].replaceAll('"','').toString()
            println m[1].replaceAll('-SNAPSHOT','').toString()
            return m[1].replaceAll('-SNAPSHOT','').toString()
            }
      }
}
从getVersion api获得版本1.0并附加在控制台中
但是那个1.0没有追加到artifactVersion

最佳答案

代码中的一个问题是,getVersion中的return不会从函数中返回。list.each{ }中的花括号创建一个匿名函数。在内部调用return只会从每个函数的当前迭代中返回。普通的for循环或find / findAll和collect的组合(其他语言的 map )会更好。
另请参见Groovy Closureslist methods

关于jenkins - Groovy值未附加在 Jenkins 管道中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63954946/

10-12 13:01