从 jenkins nvm 执行 SSH 命令时未找到
when executing SSH command from jenkins nvm not found
我正在开发一个快速应用程序并尝试使用 Jenkins 在 ec2 上部署它。
我用终端安装了 nvm,它工作正常。
在 Jenkins 中,我使用 Publish Over SSH Plugin 以相同的 user 将构建上传到 ec2,但它在 npm install 命令上失败。
我检查了 .bashrc 并验证了 nvm 安装。
当我从 shell 运行 printenv 命令时,它在 PATH
中显示 nvm
PATH=/home/ubuntu/.nvm/versions/node/v12.13.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
但是当我从 Jenkins 工作中 运行 它不存在
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
_=/usr/bin/
一个建议是您在 jenkins 脚本中 运行 类似 'echo whoami' 的东西,以确保您是当前用户。如果是这样,您可以更改用户(例如,如果 运行ning 为 root 用户)。
从你的描述来看,在我看来,用户是不一样的。
Jenkins node / agent / slave 启动一个 non-interactive shell,它跳过用户 .bashrc,只有系统(在 /etc 中)配置文件。除了编辑系统默认值之外,还有各种解决方法。
我们使用 SSH Slaves Setup plugin and EnvInject.
的组合
YMMV.
一般 snap 的解决方法(此问题实际上会影响所有 snap 应用程序)是从 Jenkins 节点配置修改 PATH 环境变量。通过这样做,节点上的每个作业 运行 都会看到修改后的 PATH 变量。以下设置将“/snap/bin”添加到 PATH:
我正在开发一个快速应用程序并尝试使用 Jenkins 在 ec2 上部署它。 我用终端安装了 nvm,它工作正常。
在 Jenkins 中,我使用 Publish Over SSH Plugin 以相同的 user 将构建上传到 ec2,但它在 npm install 命令上失败。
我检查了 .bashrc 并验证了 nvm 安装。
当我从 shell 运行 printenv 命令时,它在 PATH
中显示 nvmPATH=/home/ubuntu/.nvm/versions/node/v12.13.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
但是当我从 Jenkins 工作中 运行 它不存在
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games _=/usr/bin/
一个建议是您在 jenkins 脚本中 运行 类似 'echo whoami' 的东西,以确保您是当前用户。如果是这样,您可以更改用户(例如,如果 运行ning 为 root 用户)。 从你的描述来看,在我看来,用户是不一样的。
Jenkins node / agent / slave 启动一个 non-interactive shell,它跳过用户 .bashrc,只有系统(在 /etc 中)配置文件。除了编辑系统默认值之外,还有各种解决方法。
我们使用 SSH Slaves Setup plugin and EnvInject.
的组合YMMV.
一般 snap 的解决方法(此问题实际上会影响所有 snap 应用程序)是从 Jenkins 节点配置修改 PATH 环境变量。通过这样做,节点上的每个作业 运行 都会看到修改后的 PATH 变量。以下设置将“/snap/bin”添加到 PATH: