我正在關注一個關於Jenkins管道的教程,並且我可以在節點6.10的docker容器中獲得一個「hello world」。npm安裝在jenkins管道中的Docker中失敗
但是,當我將一個默認的EmberJS應用程序(使用ember init
)添加到repo並嘗試在管道中構建它時,它在運行npm install(由於目錄訪問問題)時失敗。該Jenkinsfile在這裏可以看到:https://github.com/CloudTrap/pipeline-tutorial/blob/fix-build/Jenkinsfile
由構建打印的錯誤信息是(這是本地安裝並在MacBook,不相關的使用java -jar jenkins.war
運行,但包括以防萬一)是:
npm ERR! Linux 4.9.12-moby
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install"
npm ERR! node v6.10.0
npm ERR! npm v3.10.10
npm ERR! path /.npm
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir
npm ERR! Error: EACCES: permission denied, mkdir '/.npm'
npm ERR! at Error (native)
npm ERR! { Error: EACCES: permission denied, mkdir '/.npm'
npm ERR! at Error (native)
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'mkdir',
npm ERR! path: '/.npm',
npm ERR! parent: 'pipeline-tutorial' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
注意:我想不是以root/sudo運行npm install
。
更新:我已經能夠取得一些進展如下:
我發現詹金斯使用使用容器從日誌構建命令:
[Pipeline] withDockerContainer
$ docker run -t -d -u 501:20 -w /long-workspace-directory -v /long-workspace-directory:/long-workspace-directory:rw -v /[email protected]:/[email protected]:rw -e
所以泊塢窗圖像運行時, ,它的工作目錄是/long-workspace-directory
(這真是一個神祕的jenkins工作區路徑),用戶ID是501(組ID 20)等等。用戶沒有名字(這顯然打破了與此無關的其他事情題)。
改,代理使用Dockefile:
agent { dockerfile { filename 'Dockerfile' args '-v /.cache/ -v /.bower/ -v /.config/configstore/' } }
指定
args '-v ...'
用於創建卷的目錄NPM安裝/亭子需求。
'npm ERR!請嘗試以root/Administrator身份再次運行此命令。試試這個提示。 – kumkanillam
通常情況下,您不會以root身份運行'npm install';它被認爲是非常糟糕的形式;我想避免這種情況。 – les2
請查看[nvm](https://github.com/creationix/nvm) –