2017-03-14 31 views
0

我有一個參數化的構建象下面這樣:詹金斯:如何訪問一個參數化的作業參數

enter image description here

然後我創建一個Groovy腳本來創建一個變量URL_TOMCAT其中的值取決於TARGET_TOMCAT參數:

即使在此更新我得到了同樣的錯誤

import hudson.model.* 
def target = build.buildVariableResolver.resolve("TARGET_TOMCAT") 
def URL_TOMCAT = "" 
switch(target) { 
    case "tomcat1": URL_TOMCAT= "http://localhost:8080/manager/text" 
    break 
    case "tomcat2": URL_TOMCAT = "http://localhost:8089/manager/text" 
    break 
} 

然後我想要得到的URL_TOMCAT值和調整Maven構建的步驟如下所示: enter image description here

但我得到這個錯誤: enter image description here

有任何一個想法如何解決這個問題?

+0

嘗試'開關(params.TARGET_TOMCAT){'用你的建議,我得到了同樣的錯誤,而不mentionning TARGET_TOMCAT像以前一樣 陷入 –

+0

@tim_yates:groovy.lang.MissingPropertyException:沒有這樣的屬性:哈德森類:hudson3514035310831211964 –

回答

1

在您的groovy腳本中,您需要進行API調用以從Jenkins獲取參數的值到工作區中。

Import hudson.model 

def targetTomcat = build.buildVariableResolver.resolve("TARGET_TOMCAT") 

def URL_TOMCAT = "" 
switch(targetTomcat) { 
    case "tomcat1": URL_TOMCAT = "http://localhost:8080/manager/text" 
    break 
    case "tomcat2": URL_TOMCAT = "http://localhost:8089/manager/text" 
    break 
} 

我想指出的是,URL_TOMCAT變量不會提供給任何其他buildsteps,它的作用範圍只是常規構建步驟。如果你想將你的URL_TOMCAT變量暴露給構建的其餘部分,你需要以某種方式將它暴露給構建環境。

def workspace = build.buildVariableResolver.resolve("WORKSPACE") 
new File("${workspace}\\Environment.Variables").write("URL_TOMCAT=${URL_TOMCAT}") 

如果你不想:我通常通過寫值到一個文件作爲一個鍵值對,並使用EnvInject Plugin

你可以將它寫入文件在Groovy像這樣做將它寫入作業工作區,您可以跳過抓取該值並僅編寫特定路徑。

在您的groovy構建步驟之後,添加一個Envinject構建步驟,並在屬性文件路徑字段中輸入包含鍵值對的文件的路徑。您應該能夠像構建的其他部分中的任何其他環境變量一樣引用URL_TOMCAT。繼續關於路徑,我將使用${WORKSPACE}\Environment.Variables作爲路徑。

相關問題