GitHub Actions 缓存
实验性的
这是一个实验性功能。界面和行为不稳定,在未来的版本中可能会发生变化。
GitHub Actions 缓存利用 GitHub 提供的 Action 缓存或支持 GitHub Actions 缓存协议的其他缓存服务。只要您的用例符合 GitHub 设置的大小和使用限制,这就是建议在 GitHub Actions 工作流程中使用的缓存。
默认驱动程序不支持此缓存存储后端docker
。要使用此功能,请使用不同的驱动程序创建一个新的构建器。有关详细信息,请参阅
构建驱动程序。
概要
$ docker buildx build --push -t <registry>/<image> \
--cache-to type=gha[,parameters...] \
--cache-from type=gha[,parameters...] .
下表描述了您可以传递到
--cache-to
和 的可用 CSV 参数--cache-from
。
姓名 | 选项 | 类型 | 默认 | 描述 |
---|---|---|---|---|
url | cache-to ,cache-from | 细绳 | $ACTIONS_CACHE_URL | 缓存服务器 URL,请参阅 身份验证。 |
token | cache-to ,cache-from | 细绳 | $ACTIONS_RUNTIME_TOKEN | 访问令牌,请参阅 身份验证。 |
scope | cache-to ,cache-from | 细绳 | buildkit | 缓存对象属于哪个作用域,参见 作用域 |
mode | cache-to | min ,max | min | 缓存要导出的图层,请参阅 缓存模式。 |
ignore-error | cache-to | 布尔值 | false | 忽略因缓存导出失败而导致的错误。 |
timeout | cache-to ,cache-from | 细绳 | 10m | 超时之前导入或导出缓存的最大持续时间。 |
验证
如果未指定url
或参数,缓存后端将回退到使用环境变量。如果您
从内联步骤手动调用该命令,则必须手动公开变量。考虑使用
GitHub Action 作为公开变量的助手。token
gha
docker buildx
crazy-max/ghaction-github-runtime
范围
范围是用来标识缓存对象的关键。默认情况下,它设置为
buildkit
。如果构建多个镜像,每次构建都会覆盖前一个的缓存,只留下最终的缓存。
要为多个构建保留缓存,您可以使用特定名称指定此范围属性。在以下示例中,缓存设置为图像名称,以确保每个图像都有自己的缓存:
$ docker buildx build --push -t <registry>/<image> \
--cache-to type=gha,url=...,token=...,scope=image \
--cache-from type=gha,url=...,token=...,scope=image .
$ docker buildx build --push -t <registry>/<image2> \
--cache-to type=gha,url=...,token=...,scope=image2 \
--cache-from type=gha,url=...,token=...,scope=image2 .
GitHub 的 缓存访问限制仍然适用。工作流只能访问当前分支、基本分支和默认分支的缓存。
使用 docker/build-push-action
使用 时
docker/build-push-action
,
url
和token
参数会自动填充。无需手动指定它们,或包含任何其他解决方法。
例如:
- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: "<registry>/<image>:latest"
cache-from: type=gha
cache-to: type=gha,mode=max
进一步阅读
有关缓存的介绍,请参阅 Docker 构建缓存。
有关gha
缓存后端的更多信息,请参阅
BuildKit README。
有关将 GitHub Actions 与 Docker 结合使用的更多信息,请参阅 GitHub Actions 简介