【发布时间】:2018-12-21 15:27:06
【问题描述】:
我在将使用 gitlab-runner 构建的映像推送到 gitlab 存储库时遇到问题。
我的 gitlab-ci.yml:
image: docker:latest
services:
- docker:dind
stages:
- build
- release
variables:
TEST_IMAGE: registry.gitlab.com/myhost/haproxy:$CI_COMMIT_REF_NAME
RELEASE_IMAGE: registry.gitlab.com/myhost/haproxy:latest
before_script:
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN gitlab.com
build:
stage: build
script:
- docker build --pull -t $TEST_IMAGE .
- docker push $TEST_IMAGE
release:
stage: release
script:
- docker pull $TEST_IMAGE
- docker tag $TEST_IMAGE $RELEASE_IMAGE
- docker push $RELEASE_IMAGE
only:
- master
docker 登录有效 - 我得到“登录成功” - 但是当涉及到推送操作时,我得到:
$ docker push $TEST_IMAGE
The push refers to repository [registry.gitlab.com/myhost/haproxy]
d77ab2f42dd4: Preparing
c70258f465dd: Preparing
96b45c1aa07c: Preparing
28587e66f3e8: Preparing
21b59fc0e3a3: Preparing
9c46f426bcb7: Preparing
9c46f426bcb7: Waiting
denied: access forbidden
ERROR: Job failed: exit code 1
跑步者在我自己的服务器上,我正在推送到 gitlab.com
我还检查了我的本地机器,在终端命令中执行,如脚本中的登录、构建和推送 - 一切正常,但如果我使用跑步者在本地运行,注册它并获得工作,我也得到访问禁止错误。
所以我认为问题出在跑步者身上,什么。 我比较了从 10.6 到最新 11.0 的几个版本的 gitlab-runner 的行为
有什么想法吗?
【问题讨论】:
-
您是否在推送前尝试过登录?也许是超时?
-
是的,我也尝试在构建阶段登录-它登录-“登录成功”,然后去推送,结果相同:/
-
你确定你不应该登录registry.gitlab.com而不是gitlab.com吗?
-
嗯,如果我登录到 gitlab.com,在本地 Ubuntu 上它可以工作,但是像你建议的跑步者我需要登录到 registry.gitlab.com。还误导我,它在终端中显示“已登录”。所以最好的解决方案是使用内置变量:“docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY”。谢谢你的帮助 - 我欠你一杯啤酒:)
-
因为在本地你已经通过不同的方式登录了,所以
docker login命令不会做任何事情。
标签: gitlab-ci gitlab-ci-runner