美文网首页
JenkinsX构建前端解决npm依赖包慢的问题

JenkinsX构建前端解决npm依赖包慢的问题

作者: yummy觉一 | 来源:发表于2021-06-11 14:09 被阅读0次

    背景

    使用的是基于k8s环境的JenkinsX,JenkinsX是Jenkins在云环境的版本,支持k8s构建环境,就是通过启用各类构建工具的pod,比如node的pod,maven的pod。

    遇到的问题

    由于使用不熟练,遇到一些问题,总结下来供以后参考:

    1. npm构建很慢
    2. 在k8s中由于容器使用过多节点资源,比如存储,导致节点驱逐容器,然后构建失败。这里比如k8s节点报错:Attemptting to reclaim ephemeral-storage

    主要解决npm构建慢的问题

    npm构建慢的解决方案

    经过多次实践,解决方案如下:
    第一种方案:简单直接,使用淘宝的npm镜像。这样其实速度能快很多

    cd test
    npm config set registry http://registry.npm.taobao.org
    npm get registry
    npm i --legacy-peer-deps
    npm run build
    

    这种方案有个问题:如果依赖包较多,导致容器耗费大量宿主机资源,会被宿主机驱逐然后导致构建失败,所以还要结合以下第二种方案,挂载pv。

    第二种方案:缓存npm包,挂载k8s的pv到pod
    1.1 把pv挂载node环境的pod容器的/node_modules下
    1.2 进入项目目录,这里的项目目录为test,建立软连接:

    cd test
    ln -s /node_modules ./node_modules
    npm i --legacy-peer-deps
    npm run build
    

    这里使用npm i --legacy-peer-deps,若直接使用npm install会由于node版本原因报错

    综合两种方案一起使用,最后的构建脚本如下:

    cd test
    ln -s /node_modules ./node_modules
    npm config set registry http://registry.npm.taobao.org
    npm get registry
    npm i --legacy-peer-deps
    npm run build
    

    其实这种方案也解决了容器耗费节点临时资源太多被驱逐的问题,因为使用的存储卷。
    仅做记录,供以后参考。

    相关文章

      网友评论

          本文标题:JenkinsX构建前端解决npm依赖包慢的问题

          本文链接:https://www.haomeiwen.com/subject/jdxveltx.html