2017-06-02 105 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

相關問題