【问题标题】:Current Node version on IBM DevOps Delivery Pipeline lost in next stageIBM DevOps Delivery Pipeline 上的当前节点版本在下一阶段丢失
【发布时间】:2018-11-27 17:46:47
【问题描述】:

在 Bluemix 管道的第一阶段,按照 SO 42269590article 的大致说明,我能够安装 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


    【解决方案1】:

    Each stage has a clean environment by design。您可以安装到阶段,并保留该阶段中的所有作业。您可能需要考虑将多个作业作为阶段的一部分运行,以便您可以重用已安装的 Node.js 版本。这将是一个典型的使用场景。

    Another option is to us a custom Docker image as foundation for your stage.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-01
      • 2021-09-08
      • 1970-01-01
      • 2020-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      相关资源
      最近更新 更多