推送到 GitLab 容器注册表不再有效

时间:2021-02-21 14:05:58

标签: docker gitlab gitlab-ci

我之前在 GitLab 上创建了一个 Docker 镜像,只包含一个 Dockerfile 和一个 .gitlab-ci.yml 文件,如下所示:

build_image:
  image: docker:git
  services:
  - docker:dind
  script:
    - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com
    - docker build -t registry.gitlab.com/user149408/ci-image-server:$CI_COMMIT_REF_NAME .
    - docker push registry.gitlab.com/user149408/ci-image-server:$CI_COMMIT_REF_NAME

这适用于我在 2020 年 5 月上旬创建的上一个项目。该项目的 Container Registry 向我展示了一个映像,此后我已成功将其用于各种 CI 作业。

现在我尝试创建一个新项目,同样只使用这两个文件。在 .gitlab-ci.yml 中,我刚刚更改了项目名称(两者的用户名相同)。

现在 CI/CD 管道在 docker push 处失败:

denied: requested access to the resource is denied

登录成功,构建完成。

在研究了 GitLab 文档后,我还尝试了其他身份验证选项,但每次都得到完全相同的行为:

docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com
docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
docker login -u $CI_JOB_USER -p $CI_JOB_TOKEN $CI_REGISTRY

这里有什么问题?在过去的 9 个月里,GitLab 是否改变了推送到其容器注册表的任何内容?我是否缺少一些项目设置?

1 个答案:

答案 0 :(得分:0)

引用不存在的资源也将导致 requested access to the resource is denied 令人困惑,但在幕后的某处可能是合乎逻辑的(令牌仅对当前存储库有效,对其他人无效,或请求的资源不存在,因此没有任何权限)。

因此,如果您因为莫名其妙的原因收到此错误,请仔细检查名称以查找难以发现的拼写错误。

在这种情况下,GitLab 存储库被称为 ci-images-server,而我试图改为推送到 ci-image-server