And*_*rra 5 docker google-cloud-platform gitlab-ci gitlab-ci-runner
我正在尝试登录 CGR 并在 Gitlab-ci runner 中使用一些私有 docker 图像。
我在 Google Cloud 中创建了一个新项目并激活了 Google Cloud Registry API。我还创建了一个新的服务帐户 (IAM),我在其中授予了先前 Cloud Registry 实例的所有权权限。然后我生成了一个json密钥。我使用以下 gitlab-ci 配置并在本地机器上测试了密钥:
image: docker:latest
services:
- docker:dind
auth:
stage: auth
script:
- docker login -u _json_key --password-stdin https://gcr.io < ./keyfile.json
Run Code Online (Sandbox Code Playgroud)
它似乎经过身份验证和授权推/拉图像。
我需要做的是拥有以下内容,我需要转到我的私人存储库并在 gitlab-ci runner 中使用这些图像。像这样的东西:
before_script:
- docker login -u _json_key --password-stdin https://gcr.io < ./keyfile.json
build:
stage: build
image: gcr.io/image-repo/image
script:
- gradle clean build
deploy:
stage: deploy
image: gcr.io/image-repo/image
script:
- gradle publish
only:
- master
Run Code Online (Sandbox Code Playgroud)
但是,我不断收到此错误:
在 docker-auto-scale 0277ea0f 上使用 gitlab-runner 11.10.1 (1f513601) 运行 使用 Docker 执行器和图像 gcr.io/image-repo/image ... 拉取 docker 图像 gcr.io/image-repo/image ...错误:准备失败:来自守护程序的错误响应:未经授权:您没有执行此操作所需的权限,并且您的凭据可能无效。要验证您的请求,请按照以下步骤操作: https://cloud.google.com/container-registry/docs/advanced-authentication (executor_docker.go:168:0s) 将在 3 秒内重试...
我实现了一个实用的解决方案:
一个人需要使用 wind 服务来重置 docker 配置,然后登录,例如在他们的本地机器上使用:
docker login -u _json_key --password-stdin https://gcr.io < ./keyfile.json
Run Code Online (Sandbox Code Playgroud)
然后,只需将存在的配置复制~/.docker/config.json
到DOCKER_AUTH_CONFIGGitlab CI 中的变量中即可。
| 归档时间: |
|
| 查看次数: |
1785 次 |
| 最近记录: |