2015-06-26 76 views
0

我想運行一個node.js腳本的永久命令來在後臺運行它。我的完整命令是永遠運行node.js在窗口上使用jenkins

"C:/Users/Administrator/AppData/Roaming/npm/forever.cmd" -c "C:/Program Files/nodejs/node.exe" start app.js 

當我直接在命令提示符下運行它時,它可以正常工作。然而,當我把它作爲構建步驟在詹金斯,我總是得到以下錯誤機器設置正確

C:\Program Files (x86)\Jenkins\workspace\apps>"C:/Users/Administrator/AppData/Roaming/npm/forever.cmd" -c "C:/Program Files/nodejs/node.exe" start app.js 
'node' is not recognized as an internal or external command, 
operable program or batch file. 
Build step 'Execute Windows batch command' marked build as failure 

路徑,包括路徑節點應用。這被確認爲命令在從屬機器上本地運行而不提供絕對路徑時成功運行。另外,我已經使用-c選項在命令本身提供了可執行節點的路徑,以防它從PATH變量中剔除。

不確定這是因爲jenkins使用JVM客戶端在窗口上運行的東西?

任何建議來解決這個問題。

感謝 馬諾

+1

你使用的是永久贏取https://www.npmjs.com/package/forever-win? – Slav

+0

我使用永久安裝使用npm永久安裝-g命令在Windows上。由於該命令在windows機器上本地運行時運行良好,我沒有看到永久包的問題。問題似乎是jenkins如何在Windows上驅動此命令。由於永遠本身調用它裏面的節點,所以想知道jenkins層需要一些配置(在JVM客戶端中,Jenkins運行連接到窗口機器)。 –

+0

問題仍然是'PATH'。詹金斯可能不會像本地登錄用戶那樣在同一用戶下運行(您嘗試過使用命令行測試)。做一個簡單的測試:觸發一個只有「執行Windows批處理命令」構建步驟的構建,並且只寫入'set'。這將打印所有環境變量。確認它們全部正確並且路徑在那裏正確設置。 – Slav

回答

1

更改PATH(如安裝一個象node軟件後進行)不被那些已經在安裝時運行的進程回升。

爲了繼承新修改的PATH,需要在安裝後重新啓動這些進程(Jenkins進程和遠程機器上的從進程,在這種情況下)。

當您通過遠程登錄進行測試並手動運行命令時,您的登錄會話命令提示符是新創建的,因此會繼承新的PATH,並且您的測試可以正常工作,但是自安裝以來尚未重新啓動的Jenkins Slave進程沒有新的PATH

+0

感謝您的答覆。你是對的。從屬代理需要重新啓動。這個問題解決了。我最終會遇到另一個問題。現在永遠正確地開始,雖然似乎並沒有顯示FOREVER LIST命令運行時的永久進程。也永遠停止說,沒有永遠的過程正在運行。看起來像一些窗口永遠的錯誤。試圖看看如何解決。 –