【发布时间】:2018-11-27 17:46:47
【问题描述】:
在 Bluemix 管道的第一阶段,按照 SO 42269590 和 article 的大致说明,我能够安装 NVM 并更新到最新版本的 nodejs:
#!/bin/bash
echo " "
echo "= = = = = = = = = = = "
echo "PATH $PATH" | tr ':' '\n'
echo " "
echo "= = = = = = = = = = = "
echo "loading nvm ..."
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
# make nvm available immediately
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_completion
echo " "
echo "= = = = = = = = = = = "
echo "Is nvm installed?"
command -v nvm
nvm --version
# based on this recommendation in the error logs
# nvm is not compatible with the npm config "prefix" option: currently set to "/home/pipeline/.npm-global"
# Run `npm config delete prefix` or `nvm use --delete-prefix v11.2.0` to unset it.
echo " "
echo "= = = = = = = = = = = "
echo "config delete prefix..."
npm config delete prefix
echo " "
echo "= = = = = = = = = = = "
echo "Installing the latest version of nodejs"
nvm install node
# remember to add below directory name to
# Build Archive Directory field of this configuration
mkdir build_archive_dir
echo " "
echo "= = = = = = = = = = = "
echo "Which node version is it?"
node -v
echo " "
echo "= = = = = = = = = = = = = = = = = = ="
echo "prepare to load nvm in the next stage"
# do not do this with every build. It only needs to be added once.
#echo 'export NVM_DIR="$HOME/.nvm" ' >> /home/pipeline/.bashrc
#echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm ' >> /home/pipeline/.bashrc
#echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion ' >> /home/pipeline/.bashrc
echo " "
echo "= = = = = = = = = = = = = = = = = = ="
echo "contents of /home/pipeline/.bashrc:"
cat /home/pipeline/.bashrc
echo " "
echo "= = = = = = = = = = = = = = = = = = ="
currentDirectory=`pwd`
echo "Contents of directory "$currentDirectory
ls -al
echo " "
但是,在下一个管道阶段,我希望能够使用我最近加载的节点版本。问题是 nodejs latest 没有启用并恢复到原始的默认 nodejs 版本。不仅如此,似乎管道正在编辑 .bashrc 文件并删除在前一阶段添加的行并删除 .nvm 文件夹。嗯嗯,完全奇怪。如果管道要撤消前一阶段的所有工作,那么在一个阶段中运行 bash 脚本没有多大意义。
下一阶段 Input 设置为 Input Type : Build artifacts。
如何让 NVM 更新的节点版本在下一阶段可用?
这不是我第一次花费大量时间调试 bluemix,只是为了切换到另一个按我需要的方式运行的提供程序。
事实证明,通过将构建器类型切换为 NPM 并使用 bluemix 推荐的脚本:
# To use Node.js 6.7.0, uncomment the following line:
export PATH=/opt/IBM/node-v6.7.0/bin:$PATH
选定的节点版本也会丢失到管道的下一阶段,即它与我上面的长 NVM 脚本无关。
【问题讨论】:
标签: node.js ibm-cloud upgrade pipeline