缓存是如何工作的
缓存通过以下方式执行效用函数用于在Artifactory文件存储库中存储和恢复数据。通过这种方式,步骤可以从先前执行的运行中安装或加载的依赖项中获益。
缓存文件作用域
方法存储的缓存文件add_cache_files
函数将与该步骤相关联,并且仅对restore_cache_files
函数在随后的运行中执行相同的步骤。
不能将缓存文件传递给管道中的其他步骤。例如,如果step_1
添加缓存文件step_1_cache
,step_2
尝试恢复step_1_cache
,什么也装不上。
并行运行的步骤可以覆盖缓存。因此,尝试并行更新步骤或管道状态的步骤将导致只有为步骤/管道保存的状态的最后一个版本可供未来的步骤使用。
Filestore的局限性
通常,Artifactory文件存储库提供用于存储和恢复数据的最高可用性能。
但是,您体验到的速度将取决于Artifactory配置使用的存储介质。如果Artifactory已配置为在本地或挂载的文件存储上使用文件系统,那么这是快速存储,缓存将始终加速步骤执行。如果Artifactory已配置为使用远程存储,如S3或Google Cloud storage,那么往返文件存储的速度可能会变慢减少缓存的用处:
- 需要很长时间安装的文件总是受益于缓存。因此,任何与bundler、npm、composer、pip等相关的东西都是缓存的绝佳候选。
- 需要很长时间下载但安装速度很快的文件不会从缓存中受益,因为从S3下载所需的时间与从原始源下载所需的时间一样多。示例包括编译的二进制文件、JDK包等。
例子
下面的示例缓存一个的结果npm安装
为后续运行.
2022世界杯阿根廷预选赛赛程资源:-名称:my_gitrepo类型:GitRepo配置:gitProvider: my_github-integration #替换为您的集成路径:my-github/my-pipelines-project #替换为您的存储库路径分支:包括:主管道:-名称:pipelines_caching步骤:-名称:step_1_pipelines_caching类型:Bash配置:inputResources: -名称:my_gitrepo执行:onExecute:- cd $res_my_gitrepo_resourcePath - restore_cache_files npm_cache $res_my_gitrepo_resourcePath/node_modules - npm install onComplete: - add_cache_files $res_my_gitrepo_resourcePath/node_modules npm_cache . sh
- 一步的
onExecute
块执行restore_cache_files
函数来加载缓存的NPM依赖项,如果它们在之前的运行中可用的话。如果不存在,则不会产生错误,因此步骤的其余部分将不中断地执行。 - 当
npm安装
运行时,它将识别缓存中是否已经存在依赖项,因此该步骤将更快地执行。如果没有缓存要加载,那么npm依赖项将被安装。 - 当该步骤完成后,它总是会将npm依赖项写入缓存,以便在下次运行该命令时可以使用它们管道.