我正在建立一个gitlab-ci进程,但我无法理解如何管理我的秘密......
所以我已经成功启动了一个gitlab/gitlab-runner作为docker容器,并从gitlab/dind注册了一个docker runner.
我想在这种情况下构建的东西只是从Dockerfile构建一个docker镜像,填充缓存以供其他ci集成测试版本使用.这通过推送到我的私人码头注册表.在这种情况下,我的.gitlab-ci.yml定义只是:
build_image:
script:
- docker build -t ensime/ensime-atom-ci .
- docker tag ensime/ensime-atom-ci docker.woodenstake.se/ensime/ensime-atom-ci
- docker push docker.woodenstake.se/ensime/ensime-atom-ci
Run Code Online (Sandbox Code Playgroud)
看起来很简单,但当然我没有信誉,所以它失败了:
我只是来自无人机,我为此生成了一个.sec文件.
但在这里我应该登录,对吗?所以我在这里读到了
问题是因为我在dockerized gitlab/gitlab-runner图像中运行gitlab-runner,那里似乎甚至没有docker cli?
viktor@i7:/var/lib$ sudo docker exec -it gitlab-runner docker login
exec: "docker": executable file not found in $PATH
Run Code Online (Sandbox Code Playgroud)
任何提示高度赞赏!
更新澄清:
所以gitlab-ci构建日志的尾部是:
012ca7ed9b62: Retrying in 1 seconds
173cd98367a6: Retrying in 1 seconds
92b0661193a5: Retrying in 1 seconds
c12ecfd4861d: Waiting
5f70bf18a086: Retrying in 5 seconds
no basic auth credentials
ERROR: Build failed: exit code 1
Run Code Online (Sandbox Code Playgroud)
主机以root身份登录到注册表.试图从docker容器登录我甚至没有docker cli.
我--docker-privileged在跑步者的注册上添加了标志.
我想凭证需要通过主机 - > gitlab-runner - > runner instance(dind)
小智 7
如果您使用的是GitLab自己的容器注册表,则必须将以下内容添加到.gitlab-ci.yml文件的脚本部分:
docker login -u gitlab-ci-token -p "${CI_BUILD_TOKEN:-$CI_JOB_TOKEN}" docker.woodenstake.se
如果您使用的是外部注册表,我建议您将凭据作为变量添加到项目设置>变量的构建中,然后您可以将该行添加docker login -u "$USER_VAR" -p "$PASS_VAR" docker.woodenstake.se到该.gitlab-ci.yml文件中.
它应该如下所示:
build_image:
script:
- 'docker login -u "$USER_VAR" -p "$PASS_VAR" docker.woodenstake.se'
- docker build -t ensime/ensime-atom-ci .
- docker tag ensime/ensime-atom-ci docker.woodenstake.se/ensime/ensime-atom-ci
- docker push docker.woodenstake.se/ensime/ensime-atom-ci
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3328 次 |
| 最近记录: |