Gitlab cache 机制可以大大加快 CI/CD Job 的执行速度。基础知识可以参看 Gitlab Cache。下面直接总结在 Kubernetes 环境中的三种 Cache 的解决方案。
第一种,Distributed runners caching,gitlab runner job执行前从分布式存储中检查下载解压 cache 文件,job执行后,压缩上传 cache 文件到分布式存储。这是 gitlab 提供的通用的正宗的方法,在非 Kubernetes 环境中也可以使用;
第二种,给 Job Executor Pod 挂载同一个 volume。gitlab runner 提供了本地存储 cache 的方式,如果远程存储没有配置,gitlab runner 照样会压缩 cache 文件,然后按照目录规则存储到指定的目录。这种方式的原理是将此目录配置为 Kubernetes Volume,每个 Job 执行时都挂载此 Volume ,这样就相当于所有的 Job 有了一个集中式的存储。可以参考 使用GitLab CI在Kubernetes服务上运行GitLab Runner并执行Pipeline 尝试配置。
第三种,这种是不使用缓存,在 Kubernetes 集群中安装各类仓库的私服,Gitlab CI/CI Job 执行时,配置为使用这些私服,速度也很快。
参考
- Gitlab Cache
- 使用GitLab CI在Kubernetes服务上运行GitLab Runner并执行Pipeline
- Distributed runners caching