Zadig v1.18.0 文档
  • 快速入门

    • 什么是 Zadig
    • 核心概念
    • 快速安装
    • 第一个项目
    • 接入准备
  • 安装与配置

    • 安装简介
    • All in One 模式
    • 使用 Sealos 一键安装
    • 基于 Helm 命令安装
    • 基于现有 Kubernetes 安装
    • 本地安装
    • 兼容性列表
  • 最佳实践
  • 项目

    • 项目

      • 项目介绍
      • K8s YAML 项目
      • K8s Helm Chart 项目
      • K8s 托管项目
      • 主机项目
      • 权限管理
    • 工作流

      • 简介
      • 产品工作流
      • 自定义工作流
      • 工作流任务
      • 工作流审批
      • 工作流通知
      • 工作流触发器
    • 环境

      • K8s YAML 环境
      • K8s Helm Chart 环境
      • K8s 托管环境
      • 主机环境
      • 服务详情
    • 服务

      • 简介
      • K8s YAML 测试服务
      • K8s Helm Chart 服务
      • K8s 托管服务
      • 服务组件
      • 服务变量
      • 主机服务
    • 构建
    • 测试
    • 代码扫描
  • 模板库

    • K8s YAML 模板
    • Helm Chart 模板
    • Dockerfile 模板
    • 构建模板
  • 工作流

    • 工作流的触发
    • 工作流的构建缓存
    • 工作流任务的并发运行
    • 工作流的镜像版本回退
    • 工作流的变量传递
  • 环境

    • 环境的负载均衡
    • 配置多套环境
    • 自测联调环境
  • 测试中心

    • 测试中心
    • 测试工具实践
    • Apipost 测试平台接入
    • Apifox 测试平台接入
  • 交付中心

    • 交付物追踪
  • 数据视图

    • 数据概览
    • 效能洞察
  • 仪表盘

    • 仪表盘
  • 集成管理

    • 账号系统

      • LDAP
      • OAuth 2.0
      • GitHub
    • 项目管理
    • 代码源

      • 简介
      • GitLab 集成
      • GitHub 集成
      • Gerrit 集成
      • Gitee 公有云集成
      • 其他代码源集成
    • CI/CD 工具
    • 代码扫描
    • 镜像仓库
    • 对象存储
    • Helm 仓库
    • Kubernetes 集群
    • 主机管理
    • 其他系统
    • 软件包管理
    • 自定义镜像管理
  • 系统设置

    • 系统配置
    • 用户管理
    • 公告管理
    • 操作日志
    • 通知设置
  • 账号设置

    • 偏好设置
  • 开发者中心

    • OpenAPI 开发文档

      • API 调用方式
      • 交付中心
      • 工作流
      • 效能洞察
    • 外部系统接入开发文档

      • 自定义账号系统
      • 自定义工作流任务
    • VS Code Toolkit 插件

      • 使用指南
  • 常见问题

    • 产品使用 FAQ
    • 部署运维 FAQ
    • 集群故障 FAQ
    • 认证鉴权 FAQ
    • 诊断手册
  • 版本发布历史

    • Zadig Roadmap
    • v1.18.0 Release Notes
    • v1.17.0 Release Notes
    • v1.16.0 Release Notes
    • v1.15.0 Release Notes
    • v1.14.0 Release Notes
    • v1.13.0 Release Notes
    • v1.12.0 Release Notes
    • v1.11.0 Release Notes
    • v1.10.0 Release Notes
    • v1.9.0 Release Notes
    • v1.8.0 Release Notes
    • v1.7.1 Release Notes
    • v1.7.0 Release Notes
    • v1.6.0 Release Notes
    • v1.5.0 Release Notes
    • v1.4.0 Release Notes
    • v1.3.1 Release Notes
    • v1.3.0 Release Notes
    • v1.2.0 Release Notes
    • v1.1.0 Release Notes
    • v1.0.0 Release Notes
    • v1.0.0-rc.1 Release Notes
  • 术语表

    • 术语表

本文主要介绍工作流中构建步骤的缓存机制。Zadig 构建支持工作空间缓存、自定义目录缓存、软件包缓存和镜像缓存。Zadig 的缓存无需配置,完全自动化。使用缓存可以提升工作流构建效率。

系统目前支持对象存储缓存和 PVC 缓存,关于系统缓存配置请参考缓存资源配置。

工作空间缓存

工作流的缓存

开启构建高级配置中的缓存配置,选中工作空间$WORKSPACE,工作流执行构建任务、测试工作流执行测试任务时会将本次任务的工作空间(WORKSPACE)缓存到对应的存储介质中。

使用对象存储作为缓存介质时,工作空间的缓存机制:

  1. 同一工作流,不同服务都有独立的工作空间缓存,互不影响。
  2. 不同工作流,相同服务都有独立的工作空间缓存,互不影响。

工作流的缓存

使用集群存储作为缓存介质时,可根据在系统设置中不同的缓存资源配置来实现共享缓存或独享缓存,配置参考缓存目录规则。

工作空间可能包含以下内容:

  1. 构建时拉取的代码和依赖
  2. 构建过程产生的一些临时文件
  3. 构建产物

某些业务场景下可能不希望使用缓存,或者临时不使用历史缓存进行构建,那么可以通过调整缓存配置达到不使用缓存的目的。

  • 如果在构建中长期不使用缓存,可以在项目 -> 构建,选择对应构建脚本,关闭 缓存配置,如下图所示。

关闭使用工作空间缓存

  • 如果临时不使用历史缓存,可以在启动工作流时,在高级设置中,选择不使用工作空间缓存,如下图所示。

临时不使用工作空间缓存

自定义目录缓存

可以按需使用缓存自定义目录功能,对必要的目录做缓存,如下图所示。

缓存自定义目录

软件包缓存

在 Zadig 系统上执行服务构建以及测试时,一般都需要根据实际业务去安装必要的软件包环境。比如编译后端相关代码就需要 Go 环境、Java 环境等,编译前端代码可能需要 NodeJS 等软件包,具体配置请参阅软件包管理。这些软件包会被缓存在系统内置的对象存储中。

软件包缓存

不同技术栈的最佳实践

下面以 Java/Golang/NodeJS 项目为例,提供配置构建缓存目录的最佳实践,以供参考。

Java

以 Maven 构建工具为例,其默认配置文件位于 ${M2_HOME}/conf/settings.xml 文件中,可在软件包管理中指定 localRepository 来设置缓存目录,并在构建配置中指定缓存目录。

Maven 软件包配置

指定 localRepository 为 $WORKSPACE/.m2/repository。

Maven 缓存

构建配置

使用 Maven 软件包,开启缓存配置并设置自定义目录。

缓存自定义目录

Golang

Golang 缓存路径通过 $GOCACHE 环境变量控制,可在构建脚本中显式修改。 在应用构建缓存配置的自定义目录中,可以填写上述配置的 $GOCACHE 路径。

缓存自定义目录

NodeJS

在构建脚本中使用 npm install <*> -g --prefix <指定目录>,再在高级配置中将目录缓存即可。

缓存自定义目录

Prev
工作流的触发
Next
工作流任务的并发运行