GitHub Actions 快取

GitHub 提供的 Action 快取GitHub 設定的大小和使用限制建置驅動程式 以取得更多資訊。

概要

$ docker buildx build --push -t <registry>/<image> \
  --cache-to type=gha[,parameters...] \
  --cache-from type=gha[,parameters...] .

下表說明您可以傳遞至 --cache-to--cache-from 的可用 CSV 參數。

名稱選項類型預設值說明
urlcache-tocache-from字串$ACTIONS_CACHE_URL快取伺服器 URL,請參閱 驗證
權杖cache-tocache-from字串$ACTIONS_RUNTIME_TOKEN存取權杖,請參閱 驗證
範圍cache-tocache-from字串buildkit快取物件所屬的範圍,請參閱 範圍
模式cache-tominmaxmin要匯出的快取層,請參閱快取模式
ignore-error(忽略錯誤)cache-to布林值false(否)忽略快取匯出失敗所造成的錯誤。
timeout(逾時)cache-tocache-from字串10m(10 分鐘)匯入或匯出快取的最大持續時間,超過此時間即會逾時。
repository(儲存庫)cache-to字串用於快取儲存的 GitHub 儲存庫。
ghtoken(GitHub 權杖)cache-to字串存取 GitHub API 所需的 GitHub 權杖。

驗證

如果未指定 urltoken 參數,gha 快取後端將會改用環境變數。如果您從內嵌步驟手動呼叫 docker buildx 命令,則必須手動公開這些變數。可以考慮使用 crazy-max/ghaction-github-runtime 這個 GitHub Action,它可以協助公開這些變數。

範圍

範圍是一個用於識別快取物件的鍵值。預設情況下,它設定為 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

避免 GitHub Actions 快取 API 限制

GitHub 的使用限制和淘汰策略

為了減輕這個問題,您可以提供 GitHub 權杖給 BuildKit。這讓 BuildKit 可以利用標準的 GitHub API 來檢查快取鍵值,從而減少對快取 API 發出的請求數量。

要提供 GitHub 權杖,您可以使用 ghtoken 參數,以及 repository 參數來指定用於快取儲存的儲存庫。 ghtoken 參數是一個具有 repo 範圍的 GitHub 權杖,這是存取 GitHub Actions 快取 API 所需的。

當您使用 docker/build-push-action 動作進行建置時,ghtoken 參數會自動設定為 secrets.GITHUB_TOKEN 的值。您也可以使用 github-token 輸入手動設定 ghtoken 參數,如下列範例所示。

進一步閱讀

如需快取的簡介,請參閱Docker 建置快取

有關 gha 快取後端的更多資訊,請參閱BuildKit READMEGitHub Actions 簡介