本文主要介绍工作流中构建步骤的缓存机制。Zadig 构建支持工作空间缓存、自定义目录缓存、软件包缓存和镜像缓存。Zadig 的缓存无需配置,完全自动化。使用缓存可以提升工作流构建效率。
系统目前支持对象存储缓存和 PVC 缓存,关于系统缓存配置请参考缓存资源配置。
工作空间缓存
工作空间$WORKSPACE
使用对象存储作为缓存介质时,工作空间的缓存机制:
- 同一工作流,不同服务都有独立的工作空间缓存,互不影响。
- 不同工作流,相同服务都有独立的工作空间缓存,互不影响。
使用集群存储作为缓存介质时,可根据在系统设置中不同的缓存资源配置来实现共享缓存或独享缓存,配置参考缓存目录规则。
工作空间可能包含以下内容:
- 构建时拉取的代码和依赖
- 构建过程产生的一些临时文件
- 构建产物
某些业务场景下可能不希望使用缓存,或者临时不使用历史缓存进行构建,那么可以通过调整缓存配置达到不使用缓存的目的。
项目构建缓存配置
高级设置不使用工作空间缓存
自定义目录缓存
缓存自定义目录
软件包缓存
在 Zadig 系统上执行服务构建以及测试时,一般都需要根据实际业务去安装必要的软件包环境。比如编译后端相关代码就需要 Go 环境、Java 环境等,编译前端代码可能需要 NodeJS 等软件包,具体配置请参阅软件包管理。这些软件包会被缓存在系统内置的对象存储中。
不同技术栈的最佳实践
下面以 Java/Golang/NodeJS 项目为例,提供配置构建缓存目录的最佳实践,以供参考。
Java
${M2_HOME}/conf/settings.xmllocalRepository
maven 3.3.9localRepository$WORKSPACE/.m2/repository
mkdir -p $HOME/maven
tar -C $HOME/maven -xzf ${FILEPATH} --strip-components=1
# customize .m2 dir
export M2_HOME=$HOME/maven
mkdir -p $WORKSPACE/.m2/repository
cat >$HOME/maven/conf/settings.xml <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>$WORKSPACE/.m2/repository</localRepository>
<pluginGroups/>
<servers/>
<mirrors>
<mirror>
<id>repo1</id>
<mirrorOf>central</mirrorOf>
<name>repo1</name>
<url>http://repo1.maven.org/maven2</url>
</mirror>
</mirrors>
<profiles/>
</settings>
EOF
构建缓存配置如下:
Golang
$GOCACHE$GOCACHE
NodeJS
npm install <*> -g --prefix <指定目录>