Я выполнял некоторые задания на Jenkins и заметил, что многие задания выполняются на главном сервере по какой-то причине, несмотря на более ранний вызов шага узла.
Я использую конвейерное задание.
Я извлек суть проблемы; мой тестовый код выглядит так:
node("arbitraryNode"){
module = load "testFile.gvy"
module.doStuff()
}
Загруженный testFile.gvy выглядит следующим образом:
def doStuff(){
print("Doing stuff")
findAllSquares(2000)
print("Stuff done")
}
def findAllSquares(n){
finalList = []
for (i in (0..n)){
for (w in (0..i)){
if (w * w == i){
finalList.add(i)
//Arbitrary n^2 time-consuming function
}
}
}
return finalList
}
return this
Когда я запускаю свой Jenkinsfile, после того, как напечатано «Doing stuff», это задание, кажется, выполняется на главном сервере 95% времени, несмотря на тот факт, что оно должно выполняться на указанном ведомом устройстве «произвольный узел».
Мой главный узел настроен правильно, с 0 исполнителями, без значащих меток и ограниченным исполнением. Может кто-нибудь сказать мне, что я здесь делаю не так? Я смутно помню, что слышал, что мы должны были выполнять ресурсоемкие этапы в своих собственных процессах через вызов batch / shell, но я не могу вспомнить, где я это слышал, и не помню, как это оправдано.
Спасибо.