我有兩個 groovy scipts(在 Jenkins 管道中執行),一個帶有變數:
// Params file
PARAM1 = "1"
PARAM2 = "2"
PARAM3 = "3"
PARAM4 = "4"
return this
第二個加載這個檔案并使用引數:
def load_params() {
def parameters = load "params.groovy"
final_parameter = ""
for (parameter in parameters) {
if(final_parameter == "") {
final_parameter = parameter.key.toUpperCase() "=" parameter.value
} else {
final_parameter = final_parameter "&|&" parameter.key.toUpperCase() "=" parameter.value
}
}
return final_parameter
}
return this
問題是對引數進行迭代不起作用。該型別不是地圖,因此我無法訪問這樣的變數。
我會使用 parameters.PARAM1 來處理它,但是第一個腳本是動態的并且名稱會更改,因此需要在不硬定義名稱的情況下執行此操作。
有什么方法可以更改/迭代引數以獲取“鍵”和“值”?
uj5u.com熱心網友回復:
以下是您可以做的幾件事。
選項 01:使引數成為地圖
這是我想的最好的解決方案。
// Params file
parameters = [ "PARAM1": "1", "PARAM2": "2", "PARAM3": "3", "PARAM4": "4"]
return this
選項 02:將引數作為檔案讀取
您可以將引數作為檔案讀取,而不是作為腳本加載,然后逐行迭代并讀取引數。
選項 03:獲取當前系結中定義的所有變數。
這可能會回傳當前系結中的所有變數,因此您可能必須過濾掉您在引數檔案中定義的變數。
def load_params() {
def parameters = load "params.groovy"
final_parameter = ""
paramMap = [:] << parameters.getBinding().getVariables()
for (parameter in paramMap) {
if(final_parameter == "") {
final_parameter = parameter.key.toUpperCase() "=" parameter.value
} else {
final_parameter = final_parameter "&|&" parameter.key.toUpperCase() "=" parameter.value
}
}
return final_parameter
}
return this
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/529359.html
上一篇:Jenkins中具有不同引數的相同cronjob的多個作業
下一篇:將空終止符附加到C 字串
