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

如何配置才能更满足我的使用场景呢?

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

# 如何使用构建缓存?

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

在低频操作的集群管理中配置缓存介质 在高频操作的应用构建中配置缓存路径 通过下述两步配置,运行在指定集群的构建任务即可使用相应的存储介质作为构建缓存。

  • 配置集群级别的缓存介质
    在集群管理中,可以针对每个集群配置缓存介质 (对象存储 或 PVC),详情参见产品文档:缓存资源配置
  • 配置应用构建使用缓存
    在应用构建的高级配置中,进行缓存使用的配置,选择 是否开启缓存 和 缓存目录 ,详情参见产品文档:构建高级配置

# 如何选择缓存存储介质?

对象存储 和 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 上推荐的一种做法使用构建缓存: 在应用构建缓存配置的自定义目录中,填写一个非代码仓库所在的路径,如 $WORKSPACE/.cache 构建脚本中,将 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

Zadig 是基于 Kubernetes 设计、研发的开源分布式持续交付 (Continuous Delivery) 产品,为开发者提供云原生运行环境,支持开发者本地联调、微服务并行构建和部署、集成测试等。Zadig 内置了面向 Kubernetes、Helm、云主机、大体量微服务等复杂业务场景的最佳实践,为工程师一键生成自动化工作流 。

# 欢迎参与开源

github.com/koderover/zadig | 源码 (opens new window) gitee.com/koderover/zadig | 源码 (opens new window) koderover.com | 官网 (opens new window) space.bilibili.com/502473428 | Bilibili (opens new window) my.oschina.net/koderover | 开源中国 博客 (opens new window) blog.csdn.net/koderover | CSDN 博客 (opens new window) zhihu.com/org/koderover | 知乎 (opens new window)

欢迎大家 Star、Fork、 Watch!和众多开发者一起探讨、交流,共建开源社区!

KodeRover 公众号

© 2022 筑栈(上海)信息技术有限公司 沪 ICP 备 19000177 号 - 1