在工作流运行之间缓存文件 - Amazon CodeCatalyst

在工作流运行之间缓存文件

启用文件缓存后,生成和测试操作会将磁盘上的文件保存到缓存中,并在后续的工作流运行中从缓存中恢复这些文件。缓存可以减少在两次运行之间,因构建或下载未更改的依赖项而导致的延迟。CodeCatalyst 还支持回退缓存,回退缓存可用于恢复部分缓存,这些缓存中包含一些所需的依赖项。这有助于减少缓存未命中造成的延迟影响。

注意

只有在 Amazon CodeCatalyst 的构建测试操作中,并且仅当这些操作配置为使用 EC2 计算类型时,文件缓存才可用。

关于文件缓存

文件缓存让您可以将数据组织到多个缓存中,每个缓存都在 FileCaching 属性下引用。每个缓存都会保存在给定路径指定的目录中。指定的目录将在未来的工作流运行中恢复。以下是使用名为 cacheKey1cacheKey2 的多个缓存进行缓存的 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 均出现缓存未命中,则工作流将继续运行,因为缓存是尽力提供服务,并不提供保证。

创建缓存

您可以按照以下说明向工作流添加缓存。

Visual
使用可视化编辑器添加缓存
  1. 通过访问 https://codecatalyst.aws/ 打开 CodeCatalyst 控制台。

  2. 选择您的项目。

  3. 在导航窗格中,选择 CI/CD,然后选择工作流

  4. 选择工作流的名称。您可以按定义工作流的源存储库或分支名称筛选,也可以按工作流名称或状态筛选。

  5. 选择编辑

  6. 选择可视化

  7. 在工作流图表中,选择要添加缓存的操作。

  8. 选择配置

  9. 文件缓存 – 可选下,选择添加缓存,然后在字段中输入信息,如下所示:

    指定主缓存属性的名称。缓存属性名称在您的工作流内必须是唯一的。每个操作在 FileCaching 中最多可以有五个条目。

    路径

    为您的缓存指定关联路径。

    恢复键 – 可选

    指定在找不到主缓存属性时用作回退手段的恢复键。恢复键名称在您的工作流内必须是唯一的。每个缓存在 RestoreKeys 中最多可以有五个条目。

  10. (可选)选择验证,在提交之前验证工作流的 YAML 代码。

  11. 选择提交,输入提交消息,然后再次选择提交

YAML
使用 YAML 编辑器添加缓存
  1. 通过访问 https://codecatalyst.aws/ 打开 CodeCatalyst 控制台。

  2. 选择您的项目。

  3. 在导航窗格中,选择 CI/CD,然后选择工作流

  4. 选择工作流的名称。您可以按定义工作流的源存储库或分支名称筛选,也可以按工作流名称或状态筛选。

  5. 选择编辑

  6. 选择 YAML

  7. 在工作流操作中,添加类似于下文的代码:

    action-name: Configuration: Steps: ... Caching: FileCaching: key-name: Path: file-path # # Specify any additional fallback caches # RestoreKeys: # - restore-key
  8. (可选)选择验证,在提交之前验证工作流的 YAML 代码。

  9. 选择提交,输入提交消息,然后再次选择提交

文件缓存限制

以下是属性名称和 RestoreKeys 的限制:

  • 名称在工作流中必须唯一。

  • 名称仅限字母数字字符(a-z、A-Z、0-9)、连字符(-)和下划线(_)。

  • 名称最多可以包含 180 个字符。

  • 每个操作在 FileCaching 中最多可以有五个缓存。

  • 每个缓存在 RestoreKeys 中最多可以有五个条目。

以下是路径的限制:

  • 不允许使用星号(*)。

  • 路径最多可以包含 255 个字符。