前端项目有多个Node版本?基于模板Jenkinsfile如何通吃?

        笔者最近在推动基于模板Jenkins流水线的参数化持续集成、持续发布工作,期间发现Node存在多个版本,有16.14、16.18、18.16等,于是问题来了,怎么用一个镜像兼容多个版本来完成构建步骤呢?

        由于之前有使用python的经历,知道virtualenv这个工具,于是开始找多版本Node管理工具,还真有一个比较流行的工具,是NVM。

        关于NVM的使用方法可以看github地址:https://github.com/nvm-sh/nvm

        下面带来本次目标的实践参考

nvm自己打包一个多版本的node的镜像
Build的时候nvm use 切换版本
https://github.com/nvm-sh/nvm
怎么用一个镜像实现自由切换node版本
docker run -it ubuntu:20.04 bash
cat > /etc/apt/sources.list << EOF
#aliyun
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
EOF
保存,更新源
apt update
apt install curl -y
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
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
nvm install 16.14
nvm install -g pnpm
nvm install 16.18
nvm install -g pnpm
nvm install 18.16
nvm install -g pnpm
再开一个窗口
docker commit xxxx xxxxx/node:nvm-self
docker push xxxxx/node:nvm-self
然后到jenkins流水线的参数build_command里面加下面几行
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
nvm use ${NODE_VERSION}
同时前面再放一个选择变量NODE_VERSION
值为
16.14
16.18
18.16

        整体思路:启动一个ubuntu容器,安装NVM,安装NODE,安装PNPM,提交容器为镜像,上传镜像,jenkins参数增加一个变量,需改原来的build_command参数值。

       以上内容是笔者亲自实践,如有帮助请帮忙点个赞。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值