Gui*_*ume 5 caching docker github-actions docker-buildkit github-actions-artifacts
长话短说:
如何手动ACTIONS_RUNTIME_TOKEN和 ACTIONS_CACHE_URL在 GitHub 中查找操作?
语境
我正在尝试在 GitHub 操作中的 buildkit 构建过程中缓存 docker 层。
理论上,使用docker/setup-buildx-action、docker/build-push-action和crazy-max/ghaction-github-runtime操作很容易。问题是,我不能使用它们(组织政策)。
我的工作流程的相关部分现在是:
$repo_url= "<ECR repo in aws>"
docker buildx create --use --driver=docker-container
docker buildx build --tag "${repo_url}:latest" --file docker/Dockerfile . --cache-to "type=gha,mode=max" --cache-from type=gha
Run Code Online (Sandbox Code Playgroud)
缓存需要 2 个变量/配置:ACTIONS_RUNTIME_TOKEN和
ACTIONS_CACHE_URL。它们将由 来设置ghaction-github-runtime,因此我无法使用。查看代码,似乎从环境中导出了2个变量,但我找不到它们。
我如何在没有其他操作帮助的情况下手动找到它们?
这有点恶心,但这是我想出的解决方案:
一、给工作流添加权限
permissions:
id-token: write # Important for at least docker gha cache
contents: read
Run Code Online (Sandbox Code Playgroud)
这将为您提供环境变量ACTIONS_ID_TOKEN_REQUEST_URL和ACTIONS_ID_TOKEN_REQUEST_TOKEN.
Docker gha 缓存需要 2 个变量:
ACTIONS_RUNTIME_TOKEN,这实际上是ACTIONS_ID_TOKEN_REQUEST_TOKENACTIONS_CACHE_URL,由此可以推断出ACTIONS_ID_TOKEN_REQUEST_URL。GitHub 变量看起来像https://pipelines.actions.githubusercontent.com/<a long id>/<a lot of things>,ACTIONS_CACHE_URLdocker 变量应该是https://artifactcache.actions.githubusercontent.com/<the long id from above>/所以我最终的解决方案是:
export ACTIONS_CACHE_URL=$(echo "$ACTIONS_ID_TOKEN_REQUEST_URL" | grep -Po 'https://[^/]+/[^/]+/' | sed 's/pipelines/artifactcache/')
export ACTIONS_RUNTIME_TOKEN=$ACTIONS_ID_TOKEN_REQUEST_TOKEN
docker buildx build --load --file docker/Dockerfile . --cache-to "type=gha,mode=max" --cache-from type=gha
Run Code Online (Sandbox Code Playgroud)
现在我可以使用缓存而无需外部操作。
| 归档时间: |
|
| 查看次数: |
1463 次 |
| 最近记录: |