在工作流运行之间缓存文件
启用文件缓存后,生成和测试操作会将磁盘上的文件保存到缓存中,并在后续的工作流运行中从缓存中恢复这些文件。缓存可以减少在两次运行之间,因构建或下载未更改的依赖项而导致的延迟。CodeCatalyst 还支持回退缓存,回退缓存可用于恢复部分缓存,这些缓存中包含一些所需的依赖项。这有助于减少缓存未命中造成的延迟影响。
关于文件缓存
文件缓存让您可以将数据组织到多个缓存中,每个缓存都在 FileCaching
属性下引用。每个缓存都会保存在给定路径指定的目录中。指定的目录将在未来的工作流运行中恢复。以下是使用名为 cacheKey1
和 cacheKey2
的多个缓存进行缓存的 YAML 代码片段示例。
Actions:
BuildMyNpmApp:
Identifier: aws/build@v1
Inputs:
Sources:
- WorkflowSource
Configuration:
Steps:
- Run: npm install
- Run: npm run test
Caching:
FileCaching:
cacheKey1:
Path: file1.txt
RestoreKeys:
- restoreKey1
cacheKey2:
Path: /root/repository
RestoreKeys:
- restoreKey2
- restoreKey3
注意
CodeCatalyst 使用多层缓存,它们由本地缓存和远程缓存组成。当预置实例集或按需计算机在本地缓存中遇到缓存未命中的情况时,将从远程缓存中恢复依赖项。因此,某些操作运行可能会因下载远程缓存而出现延迟。
CodeCatalyst 应用缓存访问限制,以确保一个工作流中的操作无法修改不同工作流中的缓存。这样可以防止各个工作流收到其他工作流中可能推送的错误数据,影响其构建或部署。限制是通过缓存范围来强制执行的,该范围将缓存隔离到每个工作流和分支对。例如,分支 feature-A
中的 workflow-A
与同级分支 feature-B
中的 workflow-A
具有不同的文件缓存。
当工作流查找指定的文件缓存但无法找到时,就会发生缓存未命中。出现这种情况可能有多种原因,例如创建了新分支或引用了新缓存但新缓存尚未创建时。这种情况也可能发生在缓存过期时,默认情况下,缓存在上次使用的 14 天后过期。为了减少缓存未命中率并提高缓存命中率,CodeCatalyst 支持回退缓存。回退缓存是备用缓存,它提供了恢复部分缓存的机会,部分缓存可能是某个缓存的较旧版本。在恢复缓存时,首先在 FileCaching
下搜索属性名称的匹配,如果未找到,则评估 RestoreKeys
。如果属性名称和所有 RestoreKeys
均出现缓存未命中,则工作流将继续运行,因为缓存是尽力提供服务,并不提供保证。
创建缓存
您可以按照以下说明向工作流添加缓存。
文件缓存限制
以下是属性名称和 RestoreKeys
的限制:
-
名称在工作流中必须唯一。
-
名称仅限字母数字字符(a-z、A-Z、0-9)、连字符(-)和下划线(_)。
-
名称最多可以包含 180 个字符。
-
每个操作在
FileCaching
中最多可以有五个缓存。 -
每个缓存在
RestoreKeys
中最多可以有五个条目。
以下是路径的限制:
-
不允许使用星号(*)。
-
路径最多可以包含 255 个字符。