写点什么

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

作者:Geek_291cde
  • 2022 年 4 月 07 日
  • 本文字数:1385 字

    阅读完需:约 5 分钟

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

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,让工程师更专注创造!欢迎加入开源吐槽群🔥

发布于: 刚刚阅读数: 3
用户头像

Geek_291cde

关注

还未添加个人签名 2022.04.06 加入

还未添加个人简介

评论

发布
暂无评论
Zadig 构建缓存如何配置才好用?_云原生_Geek_291cde_InfoQ写作平台