[英]Jenkins build step fails when calling "npm" on mac-os-x Yosemite
在開始之前,我想說我已經檢查了這些答案:
Jenkins 構建步驟在“npm install <whatever>”上失敗
現在,我已經在處理這個問題一段時間了,因此我嘗試了很多東西。
首先,我通過自制軟件安裝了 node + npm。 一個簡單的$ node -v
和$ npm -v
呼應了 node 的 v0.10.36 版本和 npm 的 v2.3.* 版本,這也意味着我有它們在路徑中,它們在終端中調用時工作。
只需添加node -v; npm -v
node -v; npm -v
到 Jenkins 中的執行 shell沒有這樣做。 經過一番修改后,我將$: which node
在終端中產生的內容復制到上述腳本中,現在看起來像這樣: /usr/local/bin/node
並且顯然有效。 Jenkins 構建成功,“node-v0.10.36”自豪地顯示在控制台輸出中。
當對恰好是/usr/local/bin/npm --version
的“npm”做同樣的事情時,計算之神不再那么仁慈了。 這次拋出了一個很大的 ' env: node: No such file or directory ' 錯誤,整個構建失敗了。
失敗的實際命令是$ /bin/sh -xe /var/folders/wr/g_dl81tn5_x0t_yz3jw602cr0000gn/T/hudson8770480548136671253.sh
和“令人驚訝的是”當我在終端中運行相同的命令時它成功了。
我還卸載了自制節點和 npm 版本,然后通過包管理器安裝它們。 結果相同。
最終我也這樣做了: https ://gist.github.com/DanHerbert/9520689,沒有運氣。
筆記:
who am i
命令會生成管理員的用戶名。非常感謝您的幫助,如果您需要任何其他信息、屏幕截圖、日志等,請告訴我。
我找到了自己的解決方案。 問題是 PATH 雖然在 shell 中可見,但沒有為 Jenkins 作業導出,因此,在這里找到的第一個解決方法是將其導出到實際腳本中,如下所示:
但這感覺就像一個黑客!
正確而優雅的解決方案是使用 Jenkins EnvInject Plugin並在配置頁面添加的 Properties 內容 textarea 中導出路徑,如下所示:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.