我有以下的使用情況:詹金斯管道:重新使用加載外部詹金斯管道腳本時,工作區
結帳/拉開一定的Git版本,使用寫入流水線腳本
(我需要這個,因爲我檢索動態修訂)從那個版本,加載詹金斯流水線文件,位於中以前簽出的文件
該文件將依靠文件從相同的檢出版本
(因此,從相同工作區)
問題:加載詹金斯-流水線文件獲取在新工作區來執行。但它是空的。我需要該文件在相同的舊工作區中執行。
我想,也許這是因爲圍繞node
,因爲node
關鍵字創建工作區,如文檔中所述。但是當我試圖加載node
之外時,Jenkins由於「離開沙箱」而不允許這樣做。
注意:jenkins-pipeline-file被發現並且真的被執行。問題是執行期間。
請看示例代碼:
內聯的管道腳本
node('master') {
def latestBuildableRevision = readFile '/my/LATEST-BUILDABLE-REVISION.txt'
checkout poll:false,
scm:[$class:'GitSCM', branches:[[name:latestBuildableRevision]],
doGenerateSubmoduleConfigurations:false,
extensions:[[$class: 'CleanBeforeCheckout']], submoduleCfg:[],
userRemoteConfigs:[[credentialsId:'...', url:'...']]]
load 'further-script-logic.jenkins'
}
文件:進一步-腳本logic.jenkins
node('master') {
// make use of certain files
// assumption: pwd() is the *same* workspace which were checked-out before
// problem: it's not, it's a new empty workspace
}
太好了!而且,被調用腳本中的多個節點可以工作! :) – Iviator
這個「功能」令人難以置信地難以發現......我欣喜若狂,我發現它,但需要更好的記錄,在每個管道中產生多個執行程序是一種荒謬的,幾乎是越野車,如果你問我,這需要是一個複選框功能「鏈接腳本執行」或沿着這些線 – sloven