gitlab CE docker推送到s3中托管的注册表失败,"被拒绝:访问被禁止"

时间:2018-06-08 16:28:09

标签: docker gitlab gitlab-ci

在gitlab CE docker中,推送到s3中托管的注册表失败,并且#34;被拒绝:访问被禁止"

以下是我的gitlab-ci.yml文件示例:

    before_script:
      - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN gitlab.domain.net (successful)

    Build:
      stage: build
      script:
        - docker build --pull -t $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME .  (successful)
        - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_NAME    (FAILS)

结果:推送期间失败。

    The push refers to repository [gitlab.domain.net:6565/sfloyd/myapp]
    7f44c19d438d: Preparing
    26472437084c: Preparing
    2de391e51d73: Preparing
    d73dd9e65295: Preparing
    686245e78935: Preparing
    d7ff1dc646ba: Preparing
    644879075e24: Preparing
    d7ff1dc646ba: Waiting
    644879075e24: Waiting
    denied: access forbidden
    ERROR: Job failed: exit code 1

我尝试过不使用S3并让注册表将图像存储在gitlab服务器本身上,并且失败并得到相同的结果。我甚至将S3存储桶设置为开放式读取和写入测试,但也失败了。 CI_JOB_TOKEN被给予" read_registry"访问就像Gitlab文档说明的那样...虽然我觉得它应该写得好,但它不是一个选项。 我已使用令牌的用户名交换了用户名登录,但失败的结果相同。 我为我的管理员用户创建了一个访问令牌,使其具有API访问权限并且失败。 有趣的是,如果我使用我的管理员用户和具有API访问权限的访问令牌,它可以在局部工作,但在我将这些相同的值放在gitlab-ci.yml文件中时则不行。

    $ docker images
    REPOSITORY                            TAG                 IMAGE ID                            CREATED             SIZE
    gitlab.domain.net:6565/sfloyd/myapp   master              b03b47a5987d        14 seconds ago      211MB
    ubuntu                                16.04                       5e8b97a2a082        2 days ago          114MB
    $ docker push gitlab.domain.net:6565/sfloyd/myapp:master
    The push refers to repository [gitlab.domain.net:6565/sfloyd/myapp]
    6852ea579a31: Pushed
    5f7a44809386: Pushed
    2de391e51d73: Layer already exists
    d73dd9e65295: Layer already exists
    686245e78935: Layer already exists
    d7ff1dc646ba: Layer already exists
    644879075e24: Layer already exists
    master: digest:         sha256:0f9f6c3d6ebc7f23f52a5b7be06457359de1c24959336de5b5e9e0a208a5b8c8         size: 1781

我已经筋疲力尽了我能想到的一切。有人有建议吗?

GitLab 10.8.1 Gitlab Runner 10.8.0 也不确定这是否重要,但这是一个私人项目。

1 个答案:

答案 0 :(得分:1)

如果其他人遇到这个问题,那就搞定了......

出于某种原因,这可以作为我的登录信息: docker login -u $ CI_REGISTRY_USER -p $ CI_JOB_TOKEN $ CI_REGISTRY

但是当我将这些值硬编码时,它们无效。

相关问题