问题说明
由于 Flow 流水线执行时,每个任务节点都会创建新的构建环境,构建完后会销毁,为解决流水线运行过程中,构建依赖反复下载的问题,提升整体构建效率,Flow 提供了自定义缓存功能。用户可以自定义自己的缓存目录,实现流水线任务多次运行的缓存共享。
如果您未设置正确的缓存目录,会导致您每次进行 Java 构建时,即使您的依赖文件未发生任何变化,都会下载您项目所有的构建依赖。典型现象如下:
-
即使运行多次后,依然需要耗时很久
Java构建—无缓存流水线的三次运行记录显示,每次构建均耗时47秒。
-
即使运行多次后,依然要下载大量的构建依赖
例如构建编号 #3 的 Java 构建 步骤日志中,执行
mvn -B clean package -Dmaven.test.skip=true -Dautoconfig.skip时仍从 maven.aliyun.com 大量下载 spring-boot-starter-parent-2.2.3.RELEASE.pom 等依赖,说明流水线缓存未生效。
加速方案
如果您的情况是以下任意一种:
-
没有使用组织自定义的
settings.xml(代码库根目录 or 组织自定义 Maven 配置) -
使用了组织自定义的
settings.xml(代码库根目录 or 组织自定义 Maven 配置),但settings.xml中不包含自定义缓存目录节点 <localRepository></localRepository>
请在 流水线编排 -> 变量与缓存 中添加 Maven 缓存目录/root/.m2。
缓存目录填写正确且开关开启。
提速效果
增加缓存目录的流水线,只会在第一次构建时下载您所需的依赖文件,后续构建会直接从缓存中加载依赖。
项目的依赖文件越多,缓存的加速效果越明显。
三次构建的持续时间分别为:首次构建(无缓存)54秒,第二次构建39秒,第三次构建43秒,后两次构建因使用缓存加载依赖而耗时明显减少。