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

原创
2022/04/06 19:24
阅读数 2.4K

 
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 构建工具为例,缓存路径可通过 $M2_HOME 环境变量控制,可在构建脚本中显式修改。对于 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 架构师 2022.04.07 组织了一场实践讨论会,在线答疑解惑。

 

会议主题:Zadig 构建相关问题最佳实践讨论

会议时间:2022.04.07 北京时间下午 16:00 ~ 17:00

会议链接:https://meeting.tencent.com/dm/3MmOTocUTUk8

 

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

 

Zadig on Github https://github.com/koderover/zadig

Zadig on Gitee https://gitee.com/koderover/zadig

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
1 收藏
0
分享
返回顶部
顶部