这是我的脚步声
steps:
-run:
name: Setup nvm and npm
command: |
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
export NVM_DIR=$HOME/.nvm
source $NVM_DIR/nvm.sh
nvm install 8.9 && nvm alias default 8.9
-run: npm install && npm run lint && npm test对于此错误消息,第二步总是失败。
/bin/bash: npm: command not found我检查了.bashrc,可以看到下面的行被添加到文件的末尾
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completionCircleci2.0通过使用#!/bin/bash -eo pipefail启动一个新的shell来调用step命令
如果我启动一个码头(docker run -i -t buildpack-deps:xenial)并应用第一步,然后通过#!/bin/bash -eo pipefail启动一个新的shell,我可以看到路径上有npm可用。
我要用码头来做这个项目
version: 2
jobs:
test_main:
docker:
- image: buildpack-deps:xenial那么,为什么它在循环2.0环境中失败呢?如何确保npm可用于步骤1中的步骤2?
我尝试将[ -s "$HOME/.bashrc" ] && \. "$HOME/.bashrc"添加到~/.bash_profile中(万一.bashrc由于非交互式/非登录shell而没有执行)
要重现这个问题,可以使用这个circleci build文件运行.circleci/config.yml
version: 2
jobs:
build:
docker:
- image: buildpack-deps:xenial
steps:
- run:
name: Setup nvm and npm
command: |
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
# Activate nvm
export NVM_DIR=$HOME/.nvm
touch $HOME/.nvmrc
source $NVM_DIR/nvm.sh
# Use node 8.9
nvm install 8.9 && nvm alias default 8.9
echo 8.9 > $HOME/.nvmrc
# Enable nvm in following steps
echo '[ -s "$HOME/.bashrc" ] && \. "$HOME/.bashrc"' >> $HOME/.bash_profile
# To fix npm install : "node-pre-gyp: Permission denied"
npm config set user 0
npm config set unsafe-perm true
npm install -g npx webpack webpack-cli jest
node --version
npm --version
- run: npm install您将看到以下错误消息:
====>> npm install
#!/bin/bash -eo pipefail
npm install
/bin/bash: npm: command not found
Error: Exited with code 127
Step failed
Task failed发布于 2018-03-13 00:59:06
问题就在于这几条线:
# Enable nvm in following steps
echo '[ -s "$HOME/.bashrc" ] && \. "$HOME/.bashrc"' >> $HOME/.bash_profile我希望能从.bash_profile那里获得.bash_profile的信息。然而,由于循环的外壳是非交互的,环境变量PS1是空白的.因此,.bashrc基本上在获得资源后立即退出,因为.bashrc中的这一行
# If not running interactively, don't do anything
[ -z "$PS1" ] && return我必须将以下行直接放在$BASH_ENV指定的文件中
echo 'export NVM_DIR=$HOME/.nvm' >> $BASH_ENV
echo 'source $NVM_DIR/nvm.sh' >> $BASH_ENV发布于 2020-05-15 16:03:37
我发现nvm更改默认节点并不适用于我的步骤。
通过下列方式解决:
- run:
name: 'Install Project Node'
command: |
set +x
source ~/.bashrc
nvm install 12
NODE_DIR=$(dirname $(which node))
echo "export PATH=$NODE_DIR:\$PATH" >> $BASH_ENV发布于 2020-01-05 19:25:37
只是source /opt/circleci/.nvm/nvm.sh在每一步的开始。
https://stackoverflow.com/questions/49232758
复制相似问题