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 Closures和list methods。
关于jenkins - Groovy值未附加在 Jenkins 管道中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63954946/