Gab*_*oux 24 gitlab-ci docker-registry
Gitlab提供了一个.gitlab-ci.yml模板,用于构建和发布图像到自己的注册表(单击一个项目中的"新文件",选择.gitlab-ci.yml和docker).该文件看起来像这样,它开箱即用:)
# This file is a template, and might need editing before it works on your project.
# Official docker image.
image: docker:latest
services:
- docker:dind
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
build-master:
stage: build
script:
- docker build --pull -t "$CI_REGISTRY_IMAGE" .
- docker push "$CI_REGISTRY_IMAGE"
only:
- master
build:
stage: build
script:
- docker build --pull -t "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG" .
- docker push "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
except:
- master
Run Code Online (Sandbox Code Playgroud)
但默认情况下,这将发布到gitlab的注册表.我们怎样才能发布到docker hub呢?
Gab*_*oux 41
.gitlab-ci.yml根本不需要改变它,我们只需要在项目的管道设置中添加/替换环境变量.
首先,我们需要知道注册表网址.使用hub.docker.com不起作用,您将收到以下错误:
来自守护程序的错误响应:登录尝试https://hub.docker.com/v2/失败,状态为:404 Not Found
默认的docker hub注册表URL可以像这样找到:
docker info | grep Registry
Registry: https://index.docker.io/v1/
Run Code Online (Sandbox Code Playgroud)
index.docker.io正是我想要的.我想发布gableroux/unity3d图像,这是我在管道秘密中使用的内容:
CI_REGISTRY_USER=gableroux
CI_REGISTRY_PASSWORD=********
CI_REGISTRY=docker.io
CI_REGISTRY_IMAGE=index.docker.io/gableroux/unity3d
Run Code Online (Sandbox Code Playgroud)
CI_REGISTRY_IMAGE很重要.
它默认为registry.gitlab.com/<username>/<project>
regsitry url需要更新所以使用index.docker.io/<username>/<project>
既然docker hub是默认的注册表,你也可以使用<username>/<project>,但我更喜欢它的详细信息.所以这个答案也应该涵盖其他注册表,只需相应地更新环境变量.
mur*_*tis 12
为了扩展GabLeRoux的答案,
我在GitLab CI构建的推动阶段遇到了问题:
denied: requested access to the resource is denied
通过改变我CI_REGISTRY对docker.io(删除index.),我是能够成功地推动.
| 归档时间: |
|
| 查看次数: |
9492 次 |
| 最近记录: |