Zadig 构建缓存如何配置才好用?

376 阅读3分钟

Zadig on Github github.com/koderover/z…

Zadig on Gitee gitee.com/koderover/z…

  

Zadig 过去支持使用 对象存储 作为构建的缓存介质,从 v1.10.0 版本开始,同时支持了 对象存储 和 PVC 两种类型的构建缓存介质,方便用户根据业务需求选择合适的缓存介质来提升构建效率。但是实际采用过程中,如何配置才能更满足我的使用场景呢? 

  

  

下述将介绍 Zadig 中构建缓存的使用方法,并结合 Java / Golang / NodeJS 不同场景,给出构建缓存的最佳实践配置方式。 

  

如何使用构建缓存?

Zadig 很重视用户体验,为开发者提供 source-> 可靠交付物 的最短路径,故在构建缓存的配置中,分别从 集群级别 和 应用级别 进行配置:

 

  1. 在低频操作的集群管理中配置缓存介质
  2. 在高频操作的应用构建中配置缓存路径

 

通过下述两步配置,运行在指定集群的构建任务即可使用相应的存储介质作为构建缓存。

1、配置集群级别的缓存介质

在集群管理中,可以针对每个集群配置缓存介质 (对象存储 或 PVC),详情参见产品文档:缓存资源配置


2、配 置应用构建使用缓存

在应用构建的高级配置中,进行缓存使用的配置,选择 是否开启缓存 和 缓存目录 ,详情参见产品文档:构建高级配置

  

如何选择缓存存储介质?

对象存储 和 PVC 两种存储介质在 构建效率 和 缓存隔离性 方面存在一定的差异,通过理解这些差异,可以更有效满足构建需求。

 

使用对象存储简化后的构建流程:

 

使用 PVC 简化后的构建流程:

 

通过对比可知:

 

在构建效率方面,对象存储场景由于涉及到 拉取解压 和 压缩上传 缓存数据,而 PVC 场景在 Pod 启动时将缓存挂载到缓存目录,因此前者比后者相对低。 

在隔离性方面,对象存储的缓存数据的隔离级别是 工作流中服务组件,而 PVC 场景是同一个 PVC 的  /<构建缓存目录> ,故前者比后者好。 

另外,在接下来即将推出的 v1.11.0 版本中,我们将对 PVC 场景支持 subpath,使得集群级别配置 PVC 时,缓存数据的隔离性可以达到和对象存储相同,敬请期待。 

  

基于上述分析,推荐如下的使用方式: 

  

不同技术栈的最佳实践

下述示例在缓存介质的配置方面没有差别,可参考上述最佳实践选择合适的缓存介质,不同开发语言在构建缓存的使用中,差异点集中在缓存目录的配置。

Java

以 Maven 构建工具为例,缓存路径可通过  M2HOME 环境变量控制,可在构建脚本中显式修改。对于Zadig自带的Maven构建工具,Maven构建缓存路径是 M2_HOM** **E** 环境变量控制,可在构建脚本中显式修改。对于 Zadig 自带的 Maven 构建工具,Maven 构建缓存路径是  **WORKSPACE/.m2/  。

在应用构建缓存配置的自定义目录中,可以填写  $WORKSPACE/.m2/ ,或依据构建环境指定 Maven 的缓存路径。

 

Golang

Golang 缓存路径通过  $GOCACHE 环境变量控制,可在构建脚本中显式修改。

在应用构建缓存配置的自定义目录中,可以填写上述配置的  $GOCACHE 路径。

 

 

NodeJS

NodeJS 缓存路径通常是在代码库的 node_modules/  目录下,可以参考 stackflow 上推荐的一种做法使用构建缓存:

  1. 在应用构建缓存配置的自定义目录中,填写一个非代码仓库所在的路径,如 $WORKSPACE/.cache
  2. 构建脚本中,将 package.json 拷贝到缓存目录 (如上述 $WORKSPACE/.cache),执行 npm install,然后再将缓存目录中的 node_modules/ 目录拷贝到代码库下,如下:

 

Zadig,让工程师更专注创造!欢迎加入开源吐槽群🔥

Zadig on Github github.com/koderover/z…

Zadig on Gitee gitee.com/koderover/z…