分析:
經驗證,該問題在使用Jenkins官方文檔中推薦的docker鏡像jenkinsci/blueocean
才會出現。
docker run \
-u root \
--rm \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean
我的解決方法:
改用最新的Jenkins docker鏡像就不會遇到:
我安裝的是最新的Jenkins docker鏡像:
docker pull jenkins/jenkins:lts
然后運行鏡像:
docker run \
-u root \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkins/jenkins:lts
注意
docker run
時,鏡像名為jenkins/jenkins:lts
,而不是jenkins/jenkins
。兩者不同。
原因推測
為什么jenkinsci/blueocean
鏡像會出現這個問題還未定位到。
但在試錯的過程中有如下發(fā)現:
-
jenkinsci/blueocean
鏡像基于Alpine Linux
系統(tǒng);jenkins/jenkins:lts
基于Debian
系統(tǒng) -
jenkinsci/blueocean
的shell是ash,即閹割版的bash;而jenkins/jenkins:lts
時完整的bash??赏ㄟ^vi /etc/passwd
命令查看 - 起初懷疑是軟連接的原因。但是按照網上的說法進行配置,還是不行。后來發(fā)現
jenkinsci/blueocean
鏡像無法通過./node
來運行(Ubuntu
/Debian
可以)。因此懷疑jenkinsci/blueocean
鏡像的shell無法運行Node
支持程序。 - ash視乎無法識別Node二進制文件(執(zhí)行程序)的路徑:node.js - 在 Jenkins docker 實例上找不到 Node - IT工具網 (coder.work)。因此,我參考文章Understanding /etc/passwd File Format - nixCraft (cyberciti.biz),嘗試在
Alpine Linux
系統(tǒng)中安裝bash,但是還是不行。
至此,我只能懷疑是jenkinsci/blueocean
鏡像采用的Alpine Linux
系統(tǒng)的問題。按理來說,Alpine Linux
系統(tǒng)是可以安裝使用NodeJS的,由于我只是使用過Ubuntu,所以不能確定。所以大概率是jenkinsci/blueocean
鏡像封裝Alpine Linux
系統(tǒng)時本身的BUG。文章來源:http://www.zghlxwxcb.cn/news/detail-724729.html
最后
目前,通過替換Jenkins Docker的鏡像可以避免env node No such file or directory
問題。但是為什么jenkinsci/blueocean
會出現這個問題,我并沒有定位到。期待大佬們的解惑。文章來源地址http://www.zghlxwxcb.cn/news/detail-724729.html
到了這里,關于Jenkins 安裝 NodeJS 插件后無法識別Node環(huán)境:env node No such file or directory的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!