nvm:Jenkins作业未找到命令

vaqhlq81  于 2022-12-26  发布在  Jenkins
关注(0)|答案(1)|浏览(487)

我正在运行一个Jenkins作业来启动部署。这个Jenkins作业在它试图部署的应用程序中启动一个Jenkins文件。虽然它正在运行,但似乎找不到nvm继续。我在这里找到了几个案例...主要是与源出。nvm位置,但这似乎对我不起作用。我可以登录Jenkins服务器,验证NVM是否安装并确实工作...使用我的帐户和当我作为代理使用时。下面是我最新的Jenkinsfile脚本,直到它失败的地方:

def environment = ['develop', 'test', 'production']

 pipeline {
   agent {label 'APP-01'}

      stages {

        stage("Checkout") {
          when {anyOf {branch 'develop'; branch 'PR-*' } }
           steps {
             checkout scm
           }

       stage("Dependencies - npm installs") {
          when {anyOf {branch 'develop'; branch 'PR-* } }
            steps {
               sh 'pwd' 
               sh 'echo $PATH'
               sh '. ~/.nvm/nvm.sh'
               sh 'nvm list'

Jenkins控制台输出:
从失败的节开始...

[Pipeline] { (Dependencies - npm installs)
 [Pipeline] sh
 + pwd
 /data/1/apps/jenkins/workspaces/workspace/jects_APP01_Repos_app-ui_develop

 [Pipeline] sh
 + export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/home/proxy/.nvm
 + PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/home/proxy/.nvm
 [Pipeline] sh
 + . /home/proxy/.nvm/nvm.sh
 ++ '[' '!' -d '' ']'
 ++++ dirname /home/proxy/.nvm/nvm.sh
 +++ cd /home/proxy/.nvm
 +++ pwd
 ++ export NVM_DIR=/home/proxy/.nvm
 ++ NVM_DIR=/home/proxy/.nvm
 ++ '[' -x '' ']'
 ++ nvm ls default
 ++ nvm use default
 ++ '[' 2 -lt 1 ']'
 +++ nvm_version default
 ++++ nvm_ls default
 ++++ local PATTERN=default
 +++++ cd /home/proxy/.nvm
 ++++ echo N/A
 ++++ return
 ++ VERSION=N/A
 ++ echo N/A
 +++ '[' N/A= N/A ']'
 +++ return
 ++ VERSION=N/A
 ++ echo 'N/A version is not installed yet'
 ++ return 1
 ++ true
 [Pipeline] sh
 + nvm list
 /data/1/apps/jenkins/workspaces/workspace/jects_APP01_Repos_app-ui_develop@tmp/durable-2d17a47f/script.sh: line 1: nvm: command not found
i7uq4tfw

i7uq4tfw1#

我认为每次你运行sh命令,就好像你打开了一个新的终端窗口,因此,如果你用sh步骤把nvm位置添加到你的路径中,你的路径只会为那个shell会话改变,当你运行另一个sh命令时,它会创建一个新的会话并使用旧的路径。
解决此问题的一种方法是使用单个sh步骤来获取和使用nvm,如下所示:

sh script: '''\
  pwd
  echo $PATH
  . ~/.nvm/nvm.sh
  nvm list'''.stripIndent()

相关问题