GitLab-CI使用cache加速构建过程

背景

在GitLab-CI中,使用artifacts可以确保所需要传递的文件可靠性,但由于生成的artifacts存在的GitLab上,每次需要远程下载,因此速度相对较慢。
所以,在一些对依赖的准确性要求不高的地方,可以考虑使用cache

cache 简介

cache 顾名思义为缓存,不同的任务之前,缓存可以进行共享。根据配置中的声明,在需要缓存时,GitLab-CI会自动下载缓存,以供当前任务使用。

cache一旦命中,意味着这部分文件不需要重新生成(编译,下载或构建),这样一来,便省去了不少功夫,从而加速了构建过程。

使用

生成cache


build-package:
  stage: prepare
  script:
      - composer install --prefer-dist --optimize-autoloader -n --no-interaction -v --no-suggest
      - composer dump-autoload --optimize
  cache:
    key: "$CI_COMMIT_REF_NAME"
    paths:
      - vendor
      

如上,在build-package任务中,声明了cache,其目录为vendor, 当script执行完之后,vendor目录会生成,该任务最后,cache会自动生成(push)

使用cache


phpcs:
    stage: testing    
    cache:
      key: "$CI_COMMIT_REF_NAME"
      policy: pull
      paths:
        - vendor    
    script:
        - if [ ! -d "vendor" ]; then
        - composer install --prefer-dist --optimize-autoloader -n --no-interaction -v --no-suggest && composer dump-autoload --optimize
        - fi
        - php vendor/bin/phpcs --config-set ignore_warnings_on_exit 1
        - php vendor/bin/phpcs --standard=PSR2 -w --colors ./
    except:
        - docs

如上,该过程定义了所要使用的cache, 由于cache并不保证每次都命中(即拿到的cache可能为空),周时在script处进行判断,如果cache为空时,重新生成所需文件

对比

以doctor-online为例子,在未使用cache之前 ,使用的是artifacts, 每次构建时间在7分钟左右,

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用cache后,构建时间缩短到了1分钟

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

参考文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

少湖说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值