前端gitlab-ci打包流水线优化

背景:项目使用的gitlabci,打包成docker镜像,最近打包越来越慢,打包一次需要40分钟左右,影响上线速度

分析:通过查看打包的日志,主要慢在了Creating cache 和 Uploading artifacts上面,以及docker镜像比较大,下图为优化前(左),优化后(右)的对比图

    

   

解决方案:

1.解决catch问题,主要是缓存了node_modules,原先是在全局中定义的,实际node_modules只在build-node这个job中使用了,只需要在这个job中缓存就可以了,减少重复缓存的时间

2.gitlab-ci.yml中artifacts中的untracked设置为false,表示不发送所有Git未跟踪的文件,在我们的项目里面,没有跟踪的基本是node_modules文件夹,可以设置未false

image.png

3.新增dockerignore文件,文件中指定在传递给 docker引擎 时需要忽略掉的文件或文件夹

image.png

 

完整代码gitlab-ci.yml

image: "docker:dind"

stages:
 - build-node
 - build-docker

before_script:
 - export IMAGE_TAG=$(echo -en $CI_COMMIT_REF_NAME | tr -c '[:alnum:]_.-' '-')
 - export IMAGE_NAME=registry.cn-hangzhou.aliyuncs.com/aticloud/CI_PROJECT_NAME:$IMAGE_TAG

build-node:
 image: "node:13.13.0-stretch-slim"
 stage: build-node
 artifacts:
   name: "dist"
   untracked: false
   expire_in: 60 mins
   paths:
    - $CI_PROJECT_DIR/dist
 script:
  - npm config set registry https://registry.npm.taobao.org
  - npm config set sass_binary_site "https://npm.taobao.org/mirrors/node-sass/"
  - npm config set chromedriver_cdnurl "https://cdn.npm.taobao.org/dist/chromedriver"
  - npm install cnpm -g && cnpm install
  - npm run lint
  - echo $IMAGE_TAG"(buildtime:"$(date +%Y%m%d%H%M)")" > public/static/version.txt && ls ./public/static/
  - npm run build
 cache:
  key: ${CI_PROJECT_NAME}
  paths:
   - node_modules/
 tags:
  - xxxx

build-docker:
 stage: build-docker
 dependencies:
   - build-node
 script:
  - "docker build -t ${IMAGE_NAME} ."
  - "docker push $IMAGE_NAME"
 tags:
  - xxxx
 only:
  - beta
  - release
  - tags

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
前端CI/CD是指通过自动化的流程来实现前端应用的持续集成和持续交付。在使用GitLab CI/CD部署前端项目时,可以通过一系列的步骤来实现自动打包UniApp应用。 首先,可以使用Docker镜像部署的方式来搭建CI/CD环境。Docker容器可以提供一个隔离的运行环境,方便管理和部署应用。 接下来,需要设置远程服务器或云服务(如阿里云OSS、华为云OBS)的相关配置。远程服务器可以作为打包后应用的存储位置,可以通过配置文件或环境变量的方式将相关信息传递给CI/CD流水线。 然后,需要编写部署脚本来实现自动打包并将应用部署到指定路径。部署脚本可以包括删除原有的dist文件、创建新的dist文件夹、解压压缩包到指定目录等操作。 最后,可以通过流水线来触发CI/CD流程。流水线可以根据代码仓库的变动触发执行,自动拉取最新代码,自动构建打包,并自动生成dist文件并部署到指定路径。 如果遇到问题,可以查看CI/CD的执行日志,以便更好地定位问题和进行排查。通过日志可以了解每个步骤的执行情况,帮助解决可能出现的错误或异常情况。 综上所述,使用GitLab CI/CD可以实现前端UniApp应用的自动打包和部署,通过配置远程服务器或云服务,并编写部署脚本,可以实现持续集成和持续交付的自动化流程。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值