分析:
经验证,该问题在使用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
镜像会出现这个问题还未定位到。
但在试错的过程中有如下发现:
-
jenkinsci/blueocean
镜像基于Alpine Linux
系统;jenkins/jenkins:lts
基于Debian
系统 -
jenkinsci/blueocean
的shell是ash,即阉割版的bash;而jenkins/jenkins:lts
时完整的bash。可通过vi /etc/passwd
命令查看 - 起初怀疑是软连接的原因。但是按照网上的说法进行配置,还是不行。后来发现
jenkinsci/blueocean
镜像无法通过./node
来运行(Ubuntu
/Debian
可以)。因此怀疑jenkinsci/blueocean
镜像的shell无法运行Node
支持程序。 - ash视乎无法识别Node二进制文件(执行程序)的路径:node.js - 在 Jenkins docker 实例上找不到 Node - IT工具网 (coder.work)。因此,我参考文章Understanding /etc/passwd File Format - nixCraft (cyberciti.biz),尝试在
Alpine Linux
系统中安装bash,但是还是不行。
至此,我只能怀疑是jenkinsci/blueocean
镜像采用的Alpine Linux
系统的问题。按理来说,Alpine Linux
系统是可以安装使用NodeJS的,由于我只是使用过Ubuntu,所以不能确定。所以大概率是jenkinsci/blueocean
镜像封装Alpine Linux
系统时本身的BUG。文章来源:https://www.toymoban.com/news/detail-724729.html
最后
目前,通过替换Jenkins Docker的镜像可以避免env node No such file or directory
问题。但是为什么jenkinsci/blueocean
会出现这个问题,我并没有定位到。期待大佬们的解惑。文章来源地址https://www.toymoban.com/news/detail-724729.html
到了这里,关于Jenkins 安装 NodeJS 插件后无法识别Node环境:env node No such file or directory的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!