【问题标题】:Groovy value is not apending in jenkins pipeline詹金斯管道中没有附加Groovy值
【发布时间】:2020-09-18 11:31:13
【问题描述】:
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

【问题讨论】:

    标签: jenkins gradle groovy jenkins-pipeline


    【解决方案1】:

    您的代码中的一个问题是 getVersion 中的返回没有从函数中返回。

    list.each{ } 中的花括号创建了一个匿名函数。在内部调用 return 只会从每个函数的当前迭代返回。普通的 for 循环或 find/findAll 和 collect 的组合(其他语言的映射)会更好。

    另请参阅Groovy Closureslist methods

    【讨论】:

    • 我没有得到确切的信息所以我应该知道什么
    • 你不能从每个块返回,使用普通的for循环代替