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