2012-11-27 50 views
3

我正在尋找一種方法來暫停詹金斯或讓Jenkins在開始另一個批處理過程之前從批處理文件中完成任務。基本上我想要的是類似的運行:詹金斯一次運行多個批處理文件

start /wait batchfile.bat 

但是當我運行這個詹金斯只是掛起,過程從未實際完成。當我運行這樣的事情:

run %startpath%\firstbatch.bat 

run %startpath%\secondbatch.bat 

詹金斯在不同線程中運行這兩個批處理文件,這對我造成了很大的問題。我需要完成批處理過程,因爲他們做飯和複製資產。被觸發的最後一批將壓縮資源並在他們的路上發送它們,但是如果資產沒有被複制,則壓縮文件將在沒有目錄中的所有文件的情況下啓動。我能想到的唯一方法就是讓每個批處理都在不同的版本中,併爲Jenkins增加一個安靜的時間段,但這只是猜測批處理腳本實際運行的時間。提前致謝。

回答

1

嘗試使用「call batchfile.bat」應該阻塞,直到批處理文件運行完畢。

+0

這工作。我知道我試過這個,因爲我的批處理文件必須「調用」其他批處理來運行併發,但由於某種原因,我會得到一個無效的目錄錯誤,也許是因爲它不喜歡我的環境變量。現在它正在工作,甚至輸出到控制檯就像它應該。謝謝你的答案。我把頭髮拉出來,我知道它必須是我忽略的簡單東西。 – SuperDave

0

如果您希望它們按順序運行,您應該爲每個批處理文件創建單獨的構建作業,但不需要猜測它們將運行多長時間。在運行firstbatch.bat的作業配置中,在Post Build Actions部分中選擇「Build other projects」,並指定運行secondbatch.bat的作業。直到第一份工作完成後才能開始這項工作。

+1

我也試圖這樣做,也許我的退出代碼有點棘手,因爲詹金斯只會運行該批處理文件,然後退出:處理泄漏的文件描述符。請參閱http://wiki.jenkins-ci.org/display/JENKINS/Spawning+processes+from+build以獲取更多信息 完成:成功然後立即開始下一個構建步驟,但我知道該批次尚未完成,因爲我可以看到目錄填充文件 – SuperDave