GitLab CI/CD shell 执行程序:找不到 npm 命令
GitLab CI/CD shell executor: npm command not found
在我的服务器上,我配置了 gitlab runner 来使用 shell
执行器。 which node
命令给出:/home/ubuntu/.nvm/versions/node/v14.11.0/bin/node
.
因此,我的 gitlab-ci.yml 文件具有以下内容:
stages:
- prepare
- check
- deploy
default:
before_script:
- export PATH=$PATH:/home/ubuntu/.nvm/versions/node/v14.11.0/bin
prepare:
stage: prepare
only:
refs:
- dev
before_script:
- export PATH=$PATH:/home/ubuntu/.nvm/versions/node/v14.11.0/bin
script:
- npm i --ignore-scripts --include=dev
cache:
key: $CI_COMMIT_BRANCH
paths:
- node_modules/
prepare
作业抛出 npm: command not found
错误,管道失败。
如何解决这个问题?
您可以添加到 script:
步骤,在 npm
命令行之前:
- echo "PATH='${PATH}'"
这样,您就可以检查路径是否真的被修改了。
尝试添加引号:
- export PATH="$PATH:/home/ubuntu/.nvm/versions/node/v14.11.0/bin"
Shell 执行器使用 .profile
加载环境。您可以通过将此添加到 gitlab-runners $HOME/.profile
:
让 gitlab-runner 使用 nvm
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
在我的服务器上,我配置了 gitlab runner 来使用 shell
执行器。 which node
命令给出:/home/ubuntu/.nvm/versions/node/v14.11.0/bin/node
.
因此,我的 gitlab-ci.yml 文件具有以下内容:
stages:
- prepare
- check
- deploy
default:
before_script:
- export PATH=$PATH:/home/ubuntu/.nvm/versions/node/v14.11.0/bin
prepare:
stage: prepare
only:
refs:
- dev
before_script:
- export PATH=$PATH:/home/ubuntu/.nvm/versions/node/v14.11.0/bin
script:
- npm i --ignore-scripts --include=dev
cache:
key: $CI_COMMIT_BRANCH
paths:
- node_modules/
prepare
作业抛出 npm: command not found
错误,管道失败。
如何解决这个问题?
您可以添加到 script:
步骤,在 npm
命令行之前:
- echo "PATH='${PATH}'"
这样,您就可以检查路径是否真的被修改了。
尝试添加引号:
- export PATH="$PATH:/home/ubuntu/.nvm/versions/node/v14.11.0/bin"
Shell 执行器使用 .profile
加载环境。您可以通过将此添加到 gitlab-runners $HOME/.profile
:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm