跳到主要内容

缓存

详细了解Buddy如何使用缓存来增强您的部署

Buddy缓存

流水线的工作速度对于任何CI/CD工具都是必不可少的。Buddy通过缓存资源来提高流水线性能,否则每次执行时都必须生成或下载这些资源。以下为缓存的内容:

  1. 存储仓文件、依赖项和工件(缓存在流水线文件系统中)
  2. 运行构建操作的Docker镜像(无需每次都从头开始构建环境)
  3. 运行Docker容器操作中使用的Docker镜像
  4. 使用Docker构建操作构建的Docker层

此外,您可以为附加到构建操作的服务和数据库启用缓存,或者为每个构建操作单独启用额外缓存

流水线文件系统缓存

每个流水线都有自己的文件系统。在第一次执行期间,存储仓被克隆到文件系统。随后的执行仅从存储仓中获取新的变更(git fetch)。

流水线文件系统可用于流水线中执行的每个操作:

  1. 构建操作在文件系统挂载到的Docker容器中运行。默认情况下,所有构建命令都在文件系统的相互关联中执行。
  2. 部署操作也在文件系统的相互关联中运行,使您能够部署在先前操作中构建的工件。
提醒

文件系统中的文件为长期保存,这意味着如果您在一次执行中获取依赖项,那么它们将不会在下一次执行中下载。

构建操作缓存

存储仓、依赖性与工件缓存

构建操作中定义的构建、测试和其他命令在包含存储仓文件系统的相互关联中执行。 正如我们上面提到的,这是流水线的主要缓存。

如果您的构建将依赖项提取到与默认构建相关联不同的目录,您可以通过在缓存选项卡中输入其路径来进行缓存:

Cache tab in a Python action

构建环境缓存

构建操作在Docker容器中运行。构建环境基于从注册中心中提取的Docker镜像。在第一次流水线运行时,Buddy拉取并缓存所选版本中的镜像。如果您将标签设置为“最新”,它会通过在每次后续执行时运行 docker pull 来检查新版本。该过程仅下载上一次执行中缺少的Docker层。

这样您就不必每次都提取完整的镜像,并且您始终可以确定您使用的是最新版本。相同的规则适用于从注册中心中提取Docker镜像的其他操作。

信息

此类型的缓存适用于工作区中所有项目的所有流水线。

环境定制缓存

可以使用构建操作的软件包 & 工具选项卡中的命令自定义Docker镜像。这些命令在第一个流水线执行时运行以创建新镜像。该镜像一直使用到从注册中心中拉取新镜像或使用新命令进行修改为止。

信息

此类型的缓存适用于工作区中所有项目的所有流水线。

数据库与服务缓存

所有构建操作都支持微服务(MySQL、MongoDB、Redis等)。这些服务就像具有独立缓存系统的单独容器一样。

Docker

在Docker构建操作中创建的所有层都被缓存。在后续构建期间,Buddy仅添加上一步中尚未构建的层。缓存的镜像可以被流水线中的其他操作使用,包括构建和Docker推送/Docker运行操作。

信息

Docker缓存仅限于一个流水线,不能与其他流水线中的操作共享。

清除缓存

有时您可能想要清除缓存,例如,如果您需要重新生成工件。在这种情况下,您可以手动清除缓存,也可以选择在每次执行前自动清除缓存的选项。该操作是按流水线执行的,不可能一次清除整个工作区的缓存。

查看已用空间

您可以通过切换到工作区设置中帐户类型、用量与账单选项卡来检查每个项目和流水线的已用空间统计。

或者直接访问网址:https://app.buddy.works/您的工作区名称/payments

帐户类型、用量与账单

手动清除

  1. 点击流水线下拉菜单中的清除缓存选项:

帐户类型、用量与账单

  1. 手动运行流水线时勾选相应选项。

  2. 从Slack运行流水线时使用/[name] clear run命令。

  3. 使用提交命令运行流水线时使用--clear-cache参数。

自动清除

要在每次流水线运行时自动清除缓存,请在流水线设置中选中流水线执行之前清除缓存

提醒

不建议使用此选项,因为每次执行时都需要从头开始下载和/或生成所有依赖项、工件和Docker镜像,这会大大延长运行时间。