$CI_BUILD_TOKEN doesn't allow to push to container registry if repo name is the same as group name
Having this setup at `.gitlab-ci.yml` for repo `test` in `test` group (please note the same name for repo and group) ```yml image: docker:latest before_script: - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY - echo "CONTAINER_TEST_IMAGE=$CONTAINER_TEST_IMAGE" - echo "CONTAINER_RELEASE_IMAGE=$CONTAINER_RELEASE_IMAGE" variables: CONTAINER_TEST_IMAGE: $CI_REGISTRY_IMAGE:$CI_BUILD_REF_NAME CONTAINER_RELEASE_IMAGE: $CI_REGISTRY_IMAGE:latest stage: prebuild script: - docker build --pull -t $CONTAINER_TEST_IMAGE . - docker push $CONTAINER_TEST_IMAGE ``` gives the following output: ``` Running with gitlab-ci-multi-runner 1.4.2 (bcc1794) Using Docker executor with image docker:latest ... Pulling docker image docker:latest ... ... $ docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY Login Succeeded $ echo "CONTAINER_TEST_IMAGE=$CONTAINER_TEST_IMAGE" CONTAINER_TEST_IMAGE=registry.example.com/test/test:master $ echo "CONTAINER_RELEASE_IMAGE=$CONTAINER_RELEASE_IMAGE" CONTAINER_RELEASE_IMAGE=registry.example.com/test/test:latest $ docker build --pull -t $CONTAINER_TEST_IMAGE . ... $ docker push $CONTAINER_TEST_IMAGE The push refers to a repository [registry.example.com/test/test] f30166827568: Preparing ... cb28dbff7968: Waiting ... unauthorized: authentication required ERROR: Build failed: exit code 1 ``` Having the same configuration at `.gitlab-ci.yml` for repo `foo` in `test` group gives green output: ``` Running with gitlab-ci-multi-runner 1.4.2 (bcc1794) Using Docker executor with image docker:latest ... Pulling docker image docker:latest ... ... $ docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY Login Succeeded $ echo "CONTAINER_TEST_IMAGE=$CONTAINER_TEST_IMAGE" CONTAINER_TEST_IMAGE=registry.example.com/test/foo:master $ echo "CONTAINER_RELEASE_IMAGE=$CONTAINER_RELEASE_IMAGE" CONTAINER_RELEASE_IMAGE=registry.example.com/test/foo:latest $ docker build --pull -t $CONTAINER_TEST_IMAGE . ... $ docker push $CONTAINER_TEST_IMAGE The push refers to a repository [registry.example.com/test/foo] 30f8dd4fbaf4: Preparing ... ef855ec71179: Waiting ... 30f8dd4fbaf4: Pushed ... master: digest: sha256:e2d7015247e7b5c689a1eaefdf6fd5952e16602c33fc3d243f3d4dbc63d57624 size: 1575 Build succeeded ``` When removed `docker login` line from `.gitlab-ci.yml` *and* added `volumes = ["/root/.docker/config.json:/root/.docker/config.json:ro"]` at `/etc/gitlab-runner/config.toml` on successfully logined at GitLab's Container Registry host everything works fine: ``` Running with gitlab-ci-multi-runner 1.4.2 (bcc1794) Using Docker executor with image docker:latest ... Pulling docker image docker:latest ... ... $ echo "CONTAINER_TEST_IMAGE=$CONTAINER_TEST_IMAGE" CONTAINER_TEST_IMAGE=registry.example.com/test/test:master $ echo "CONTAINER_RELEASE_IMAGE=$CONTAINER_RELEASE_IMAGE" CONTAINER_RELEASE_IMAGE=registry.example.com/test/test:latest $ docker build --pull -t $CONTAINER_TEST_IMAGE . ... $ docker push $CONTAINER_TEST_IMAGE The push refers to a repository [registry.example.com/test/test] f30166827568: Preparing ... cb28dbff7968: Waiting ... f30166827568: Pushed ... testing: digest: sha256:2e203290df18f47fefc202ccb897a970b528a0b1520c9f11d64bd56bef289e19 size: 3451 Build succeeded ``` The only reason for this behavior I can see here is the same name for repo and group. ``` GitLab 8.11.0 GitLab Shell 3.4.0 GitLab Workhorse 0.7.8 ```
issue