文档

缓存设置

更新时间:

本文主要介绍流水线缓存设置及清理功能。

缓存设置

由于 Flow 流水线执行时,每个任务节点都会创建新的构建环境,构建完后会销毁,为解决流水线运行过程中,构建依赖反复下载的问题,提升整体构建效率,Flow 提供了缓存功能。用户可以自定义缓存目录,实现流水线任务多次运行的缓存共享。

例如,在 Nodejs 构建任务执行npm install会在项目中生成./node_modules,而缓存在/root/.npm中,可以将/root/.npm保存起来方便下次加速下载。

设置缓存目录

进入流水线编辑页, 变量与缓存 -> 缓存,设置缓存目录。目前 Flow 暂不支持流水线同一次运行过程中,任务之间的缓存共享。Flow 的缓存能力主要解决的是任务级别多次运行之间的下载依赖问题。

  • Flow 默认缓存以下目录,可按需开启/关闭默认缓存目录,按需修改缓存目录

管理工具

缓存目录

Maven

/root/.m2

Gradle

/root/.gradle

NPM

/root/.npm

yarn

/root/.yarn

go mod

/go/pkg/mod

其他缓存

/root/.cache

image.png

  • 支持添加自定义缓存目录,自定义缓存目录需满足以下规则:

    • 不允许填写//root/root/workspace以及/root/workspace/以下的目录

    • 不允许包含..,例如/root/abc/..为非合法文件目录

    • 必须为一个合法的文件目录,例如/root/%\&dfaf为非合法文件目录

若需要将构建过程中工作区/root/workspace下某个目录或文件进行缓存,可以将其复制到/root下其他目录并将其设置为缓存目录。示例如下:

image.png

image.png

image.png

构建任务使用缓存

缓存目录设置好后,流水线执行时可以使用相应构建命令参数指定是否优先使用缓存。

  • npm 构建时,使用以下命令安装依赖包,优先从本地缓存获取依赖包:

// 构建中优先使用缓存中
npm install --prefer-offline --no-audit
  • yarn 构建时,使用以下命令安装依赖包,优先从本地缓存获取依赖包:

// 构建中优先使用缓存中
yarn install --prefer-offline

私有构建集群缓存配置

当你使用公共构建集群时,所有的构建依赖均会缓存在云端,每次构建时需要从云端拉取缓存。

你使用私有构建集群时,您可以选择:

  1. 本地缓存,此时所有的依赖文件会存储在私有构建集群上,直接使用本地缓存,无需再从云端拉取。此功能可以解决私有构建机和云端因为网络问题导致的构建缓慢。

  2. 云端缓存,每次构建会下载云端的构建缓存文件。主要解决构建集群中存在多个构建机时,每次构建任务可能被调度到不同的构建机,通过云端缓存可以重复利用缓存的依赖文件。

1231

私有构建机缓存清理

当私有构建集群配置本地缓存时,运行一段时间后,会在构建机上产生较多的镜像、依赖等缓存文件,需要定时进行清理,否则可能会因为构建机磁盘打满而导致流水线运行失败。

云效提供缓存清理工具,针对私有构建机的以下内容进行清理:

  • 基础环境清理

    • 清理已停止容器

    • 清理悬空无tag镜像

    • 清理自定义环境构建产生的中间镜像

  • 清理目录/root/yunxiao/*/runner/

    • 3天前的构建任务运行日志

    • 3天前的构建任务步骤日志

    • 15天未更新的构建任务缓存目录

清理工具执行命令如下:

docker run -v /var/run/docker.sock:/var/run/docker.sock -v /root/yunxiao:/root/yunxiao registry.cn-beijing.aliyuncs.com/build-steps/cache-cleaner:0.0.3-20230914183240

如果需要定期进行缓存清理,建议将以上命令配置到cronjob中。