Node.js 机器执行器上的CircleCI遗忘节点版本
我正在使用Node.js 机器执行器上的CircleCI遗忘节点版本,node.js,circleci,nvm,Node.js,Circleci,Nvm,我正在使用nvm将节点版本设置为10.15.1,在下一步run步骤中,它将返回到6.1.0。我尝试了几种变体,包括这一种: 我错过了什么明显的东西吗?我只需要运行每个步骤就可以记住我在第一个步骤中设置的节点版本,这样在这种情况下它们都将使用10.15.1 以下是我的工作流程中的作业: dev: environment: BASH_ENV: run/env/test/.env machine: image: circleci/classic:latest steps:
nvm
将节点版本设置为10.15.1
,在下一步run
步骤中,它将返回到6.1.0
。我尝试了几种变体,包括这一种:
我错过了什么明显的东西吗?我只需要运行每个步骤
就可以记住我在第一个步骤中设置的节点版本,这样在这种情况下它们都将使用10.15.1
以下是我的工作流程中的作业:
dev:
environment:
BASH_ENV: run/env/test/.env
machine:
image: circleci/classic:latest
steps:
- checkout
- run:
name: Install node@10
command: |
set +e
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
export NVM_DIR="/opt/circleci/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
nvm install 10
nvm alias default 10
rm -rf ~./node-gyp
node -v # prints 10.15.1 as expected
- run:
name: Install yarn and rsync
command: |
node -v # prints 6.1.0
export NVM_DIR="/opt/circleci/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
node -v # prints 6.1.0
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update && sudo apt-get install yarn rsync
- run:
name: Install node modules
command: |
node -v # prints 6.1.0
yarn install # this is what is failing because of the unexpected node version
- run:
name: Deploy to Dev Server
command: |
if [ "${CIRCLE_BRANCH}" == "master" ]; then rsync -arhvz --exclude .git/ -e "ssh -o StrictHostKeyChecking=no" --progress \
./ ubuntu@xxx.xxx.xxx.xxx:/var/www/xxx/xxx/; fi
if [ "${CIRCLE_BRANCH}" == "master" ]; then ssh -o StrictHostKeyChecking=no ubuntu@xxx.xxx.xxx.xxx 'cd /var/www/xxx/xxx && pm2 restart all --update-env'; fi
你在这里做的太多了。您只需运行
nvm安装v10
<代码>nvm已安装在计算机
执行器中。@FelicianoTech不正确,每个生成步骤都在新环境中运行,并且忘记了nvm设置。您必须在每个构建步骤中设置NVM_DIR和NVM设置脚本的源代码。讨厌,我知道。尽管FelicianoTech是正确的,但在预装了nvm的机器执行器中,它不记得下一次运行命令中的实际状态。为了使nvm记住其状态,您必须将其存储在$BASH_ENV
中。经过数小时的搜索,我终于找到了一个:
然后,也只有到那时,我才成功地使用最后一个run命令-run:node-v
仍然正确地记住了节点版本
CircleCI上的输出
(感谢讨论板上的phil lgr)通过将已安装的节点添加到$PATH解决了此问题 例如:
- 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
- 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