我正在遷移一個舊的 Jenkins 構建服務器,我沒有設定到一個新的更新版本,并且破壞了 groovy 腳本,因為它沒有像以前那樣命名 @libs 中的檔案夾,也許它是一些更改的設定。
舊 Jenkins 2.204 上的 @lib 結構:
D:\jenkins_workspace\<name of workspace>@libs\PC_Lib\PC_Scripts
在使用 Jenkins 2.361 進行新安裝時,@lib 如下所示:
D:\jenkins_workspace\<name of workspace>@libs\46cbfc656d3cc901a720a5a9085086f64d931aaa512386cb7be1cd2ca870a4ed\PC_Scripts
設定:Windows server 2022 Jenkins 2.361.1 SCM = Subversion (SVN) 1.8
在 Groovy 檔案中,它們參考這樣的腳本:
def SCRIPT_PATH = "${env.WORKSPACE}@libs/PC_Lib/PC_Scripts"
有沒有辦法使用直接命名庫名稱而不是 UUID 名稱的舊方式?
uj5u.com熱心網友回復:
我沒有找到直接的解決方案,而是使用 ascript{}回傳檔案夾名稱或 UUID,具體取決于它在檔案夾中找到的內容。找到檔案夾后,將回傳名稱并將其設定為使用的變數,而不是硬編碼的檔案夾名稱。
def pc_lib_folder = script {
def folders = []
def dir = new File("${env.WORKSPACE}@libs")
dir.eachFileRecurse (FileType.DIRECTORIES) { file ->
folders << file
}
return folders
def FOLDER_NAMES = ["<Library name>", "<UUID>"]
def folder = FOLDER_NAMES[0]
if ( dir.contains(FOLDER_NAMES[0]) ) {
folder = FOLDER_NAMES[0]
}
else if ( dir.contains(FOLDER_NAMES[1]) ) {
folder = FOLDER_NAMES[1]
}
else {
folder = "No directories found"
}
echo "${folder}"
}
這不是最終解決方案,但至少現在可以使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/510159.html
