2017-06-02 70 views
1

我在这里有两个关于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.remot ing.ProxyException:groovy.lang.MissingMethodException:法无签名:Helpers.readFile()

真正的新Groovy和Java,所以任何指针赞赏

感谢

回答

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:基于OP:法无签名:Helpers.readFile()

编辑评论

请查看是否这会有所帮助:

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

唉唉我刚刚意识到我用方法名称所做的一切......愚蠢的错误 – Richlewis

+0

欣赏它是否被接受为可接受的答案。 – Rao

+0

你知道如何访问系统变量,因为它似乎不承认'getenv' – Richlewis

相关问题