当从jenkins nvm执行SSH命令时找不到

时间:2019-11-16 08:44:26

标签: ubuntu jenkins ssh jenkins-plugins nvm

我正在开发一个快速应用程序,并尝试使用Jenkins在ec2上部署它。 我使用终端安装了nvm,并且运行正常。

在Jenkins中,我使用“通过SSH发行插件”以相同的用户将内部版本上传到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 /

3 个答案:

答案 0 :(得分:0)

有人建议您在jenkins脚本中运行类似“ echo whoami”之类的内容,以确保您是当前用户。如果是这样,则可以更改用户(例如,如果以root用户身份运行)。 根据您的描述,在我看来,用户并不相同。

答案 1 :(得分:0)

Jenkins节点/代理/从属启动一个non-interactive shell,它跳过用户.bashrc,仅跳过系统(在/ etc中)配置文件。除了编辑系统默认值外,还有多种解决方法。

我们结合使用SSH Slaves Setup插件和EnvInject

YMMV。

答案 2 :(得分:0)

通常,快照的一种解决方法(此问题实际上会影响所有快照应用程序)将是通过Jenkins Node Configuration修改PATH环境变量。这样,节点上运行的每个作业都会看到修改后的PATH变量。以下设置将“ / snap / bin”添加到PATH:

enter image description here