Gitlab CI npm 和 yarn加速构建

NPM缓存机制

在这里插入图片描述

如果使用GitLab CI,即使更换了淘宝NPM源,如果不缓存每次下载结果,每次在runner以容器方式执行yarn install 或 npm ci时还是从网络下载,大一点的项目下载依赖都是几个G,下载完后还要解压到node_modules目录,最后才执行编译,整个过程很耗时。

我的解决方案是把yarn和npm的cache目录缓存到宿主机操作系统,执行yarn install和npm ci时存在的包就不用从网络来下载了,直接解压到node_modules了。

version: '3'
services:
  runner:
    # gitlab 13.94-ee版本可用如下版本,gitlab runner latest版本不可用
    image: gitlab/gitlab-runner:11.3.1
    container_name: gitlab-runner
    restart: always
    volumes:
      # gitlab runner生成的配置文件位置,启动后需要修改里面的配置
      - /data/gitlab-runner/config:/etc/gitlab-runner
      - /var/run/docker.sock:/var/run/docker.sock
# 查看yarn默认缓存位置
$ yarn cache dir
# 查看npm默认缓存位置
$ npm config get cache

# 检验一下安装的包是否在对应目录
$ yarn add axios
$ ls -al /usr/local/share/.cache/yarn/

$ npm i react
$ ls -al /root/.npm/

如果你修改过npm全局安装位置,请修改下面文件的挂载路径。我这里是用的容器执行编译步骤,容器很干净,没有任何特殊设置,所以用默认位置。

gitlab runner config.toml文件如下。

concurrent = 5
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "docker runner"
  url = "https://gitlab.xxx.com/"
  token = "xxxxx"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "docker:20.10.14"
    privileged = true
    disable_cache = false
    volumes = ["/cache","/var/run/docker.sock:/var/run/docker.sock","/data/gitlab-runner/data:/builds","/root/.m2:/root/.m2","/root/.yarn_cache:/usr/local/share/.cache/yarn","/root/.npm:/root/.npm"]
    shm_size = 0
    #pull_policy = "if-not-present"
    pull_policy = "always"
    shm_size = 0
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]

npm的安装及缓存机制详解_龙韵音的博客-CSDN博客_npm 缓存

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值