使用带有Jenkins管道的外部Groovy文件

时间:2017-06-02 11:57:59

标签: java jenkins groovy

我在这里有两个关于Jenkins管道和Groovy方法的问题。首先,我有多个共享常用方法的构建,因此最好将所有这些方法放在一个类中,然后为每个构建导入文件。

我的Groovy脚本的片段看起来像

import groovy.json.JsonSlurperClassic;
import groovy.json.JsonSlurper;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.util.HashSet;
import java.util.Set;
import java.io.Serializable;

Map get_var() {
      def gradleVars = readFile "${env.WORKSPACE}/gradle-client/gradle.properties"
      Properties properties = new Properties();
      InputStream is = new ByteArrayInputStream(gradleVars.getBytes());
      properties.load(is)

      def sdk_version = "SDKVersion"
      def SDK_VERSION = properties."$sdk_version"

    return [sdk_version: "$SDK_VERSION"}
}

在我的管道脚本中我有

def groovyMethod = load("release_pipeline.groovy")
// Call method
groovyMethod.getVar()

我遇到的第一个问题是如何在我的方法中使用${env.WORKSPACE},其次如何在出现错误时在我的脚本中使用readFile

  

hudson.remoting.ProxyException:groovy.lang.MissingMethodException:没有方法签名:Helpers.readFile()

我是Groovy和Java的新手。

1 个答案:

答案 0 :(得分:1)

请你试试下面的内容:

def getVar() {
  def properties = new Properties()
  File propertiesFile = new File("${System.getenv['WORKSPACE']}/gradle-client/gradle.properties")
  properties.load(propertiesFile.newDataInputStream())


  return [sdk_version: properties.SDKVersion]

}

可能看起来,您有不同的方法名称get_var(),并且您尝试使用getVar()

而且我不确定那个错误来自上面的脚本

  

groovy.lang.MissingMethodException:没有方法签名:Helpers.readFile()

编辑:基于OP评论

请查看这是否有帮助:

def workspace = Thread.currentThread().executable.workspace.toString()