簡體   English   中英

在 mac-os-x Yosemite 上調用“npm”時,Jenkins 構建步驟失敗

[英]Jenkins build step fails when calling "npm" on mac-os-x Yosemite

在開始之前,我想說我已經檢查了這些答案:

Jenkins 構建步驟在“npm install <whatever>”上失敗

Jenkins 在 npm install 上的構建失敗

現在,我已經在處理這個問題一段時間了,因此我嘗試了很多東西。

首先,我通過自制軟件安裝了 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,沒有運氣。

筆記:

  • 我正在運行 Jenkins 1.613 並嘗試使用 1.5**
  • 我沒有創建“Jenkins”特定用戶,而是使用管理員。 這恰好是 Jenkins 運行的同一用戶,因為可執行腳本中的who am i命令會生成管理員的用戶名。
  • sudo'ing 沒有幫助
  • 我也在虛擬環境中運行整個事情 - vagrant
  • 我沒有將 Jenkins 作為守護進程運行,因為它與 xtools 沖突,而是作為一個簡單的過程
  • 我還嘗試了帶有各種配置的 jenkins-node 插件(如果需要可以詳細說明)

非常感謝您的幫助,如果您需要任何其他信息、屏幕截圖、日志等,請告訴我。

我找到了自己的解決方案。 問題是 PATH 雖然在 shell 中可見,但沒有為 Jenkins 作業導出,因此,在這里找到的第一個解決方法是將其導出到實際腳本中,如下所示:

在此處輸入圖像描述

但這感覺就像一個黑客!

正確而優雅的解決方案是使用 Jenkins EnvInject Plugin並在配置頁面添加的 Properties 內容 textarea 中導出路徑,如下所示:

在此處輸入圖像描述

管理 Jenkins -> 配置系統 -> 全局屬性 -> 環境變量

在此處輸入圖像描述

暫無
暫無

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

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