簡體   English   中英

從詹金斯奴隸加載Groovy腳本

[英]Loading groovy script from jenkins slave

我有一個jenkins管道,它加載如下所示的groovy實用程序腳本:

Utils = load('/var/lib/jenkins/utils/Utils.groovy')

當我在節點上執行管道時,一切都很好。 在這種情況下,我可以在管道中的類Utils中使用這些方法。

node('master'){
    stage('stage1'){
        def Utils = load('/var/lib/jenkins/utils/Utils.groovy')
        Utils.doSomething()
    }
}

當我嘗試在從屬設備中執行管道時,出現了我的問題。 在這種情況下,上述負載會導致錯誤

java.io.IOException:java.io.FileNotFoundException:/var/lib/jenkins/utils/Utils.groovy(無此類文件或目錄)

為了避免此錯誤,我在管道中將文件加載到主節點中,如下所示

node('master'){
    stage('stage1'){
        Utils = load('/var/lib/jenkins/utils/Utils.groovy')
    }
}
node(){
    stage('stage2'){
        Utils.doSomething()
    }
}

這不是很有效,我不想僅使用master來加載文件,您對如何在Slave節點上加載Groovy scipt有任何建議嗎?

謝謝

首先,當您在從屬服務器上執行時嘗試加載文件時,導致上述錯誤java.io.IOException:java.io.FileNotFoundException:/var/lib/jenkins/utils/Utils.groovy(無此類文件或目錄)節點。 但是文件存儲在主節點的/var/lib/jenkins/utils/Utils.groovy中,我想這是另一台計算機和另一個文件系統。 因此,錯誤是合乎邏輯的。

當您在另一個節點(計算機,服務器等)上執行某些管道操作時,要加載該文件,需要將其存儲在該計算機(從屬)中並從那里加載它-因此路徑必須符合存放在從屬計算機中。

因此,我建議:

  1. 只需將Utils.groovy文件存儲在從機上並從那里加載
  2. 將其加載到主服務器上的工作區中(就像您已經做的那樣)
  3. 另外,您可以將groovy文件代碼存儲在github中並從那里加載它,而不依賴於主/從文件系統(我建議使用此選項)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM