Jenkins 安装 NodeJS 插件后无法识别Node环境:env node No such file or directory

分析:

经验证,该问题在使用Jenkins官方文档中推荐的docker镜像jenkinsci/blueocean才会出现。

bash 复制代码
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镜像:

bash 复制代码
docker pull jenkins/jenkins:lts

然后运行镜像:

bash 复制代码
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镜像会出现这个问题还未定位到。

但在试错的过程中有如下发现:

  1. jenkinsci/blueocean镜像基于Alpine Linux系统;jenkins/jenkins:lts基于Debian系统
  2. jenkinsci/blueocean的shell是ash,即阉割版的bash;而jenkins/jenkins:lts时完整的bash。可通过vi /etc/passwd命令查看
  3. 起初怀疑是软连接 的原因。但是按照网上的说法进行配置,还是不行。后来发现jenkinsci/blueocean镜像无法通过./node来运行(Ubuntu/Debian可以)。因此怀疑jenkinsci/blueocean镜像的shell无法运行Node支持程序。
  4. 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。

最后

目前,通过替换Jenkins Docker的镜像可以避免env node No such file or directory问题。但是为什么jenkinsci/blueocean会出现这个问题,我并没有定位到。期待大佬们的解惑。

相关推荐
Elastic 中国社区官方博客4 小时前
为 Elastic Cloud Serverless 和 Elasticsearch 引入统一的 API 密钥
大数据·运维·elasticsearch·搜索引擎·云原生·serverless
Agent手记4 小时前
制造业数字化升级:生产全流程企业级智能体落地解决方案 —— 基于LLM+超自动化全栈架构的智改数转深度实战
运维·ai·架构·自动化
云安全助手4 小时前
弹性云服务器+高防IP:让DDoS攻击不再是业务“生死劫”
运维·网络·安全
深色風信子5 小时前
Docker newapi
运维·docker·容器·newapi
闫利朋6 小时前
Ubuntu 24.04 桌面安装向日葵完整指南
linux·运维·ubuntu
阿里巴巴首席技术官7 小时前
通过纯Nginx实现一个简单的文件上传功能
运维·nginx
GL_Rain8 小时前
快速搭建Halo博客 + 崩溃秒恢复方案(Docker极简部署)
运维·docker·容器
不做无法实现的梦~8 小时前
Linux 上使用 CLion 开发嵌入式,并用 Codex CLI
linux·运维·服务器
卓豪终端管理9 小时前
两种终端数据清除策略的技术笔记:企业定向清除 vs 完全擦除
运维·自动化
lulukanshijie9 小时前
Packer 入门:自动化镜像构建工具
运维·其他·自动化