繁体   English   中英

在 CI 中使用来自 gitlab Registry 的图像

[英]use image from gitlab Registry in CI

你能告诉我我是否以正确的方式做:

  • 我已经创建了 Docker 映像,其中包含在 gitlab CI 中运行测试所需的所有内容
  • 我把它推送到 gitlab 注册表
  • 我可以在 gitlab 页面的 Registry my image - gitlablogin/projectname部分看到
  • 我想将此图像用于 CI,因此在 .gitlab-ci.yml 中添加图像: gitlablogin/projectname

之前我有 .gitlab-ci.yml

same_task:
  stage: deploy
  image: python:3
  script:
    - python -V

我现在有:

pep8:
  stage: deploy
  image: gitlablogin/projectname
  script:
    - python -V

在此更改作业失败后:

Running with gitlab-runner 11.4.2 (cf91d5e1)
  on docker-auto-scale 72989761
Using Docker executor with image gitlablogin/projectname ...
Pulling docker image gitlablogin/projectname ...
ERROR: Job failed: Error response from daemon: pull access denied for gitlablogin/projectname, repository does not exist or may require 'docker login' (executor_docker.go:168:0s)

我在 gitlab CI 和 gitlab 注册表的上下文中使用 docker 是否正确? 我还想将我的 docker 文件保留在同一个 repo 上,并在 Dockerfile 中的相同内容更改时构建新映像,最好的方法是什么?

现在可以使用 gitlab 注册表中的图像而无需任何特殊步骤。 只需构建映像并将其推送到您的 gitlab 项目容器注册表

docker build -t registry.gitlab.com/gitlabProject/projectName:build .
docker push registry.gitlab.com/gitlabProject/projectName:build 

然后只需在您的管道设置中指定此图像:

image: registry.gitlab.com/gitlabProject/projectName:build

Gitlab 能够使用它的凭据来拉取这个镜像:

Preparing the "docker+machine" executor
00:46
 Using Docker executor with image registry.gitlab.com/gitlabProject/projectName:build ...
 Authenticating with credentials from job payload (GitLab Registry)
 Pulling docker image registry.gitlab.com/gitlabProject/projectName:build ...
 Using docker image sha256:e7e0f4f5fa8cff8a93b1f37ffd7dd0505946648246aa921dd457c06a1607304b for registry.gitlab.com/gitlabProject/projectName:build ...

更多: https : //docs.gitlab.com/runner/configuration/advanced-configuration.html#using-a-private-container-registry

您的方法与您想要实现的目标相差不远。 我相信你缺少的是:

根据: https : //docs.gitlab.com/ee/ci/docker/using_docker_images.html#what-is-an-image

为了使用您为 CI 构建的图像,您首先需要将它作为服务添加到运行程序的config.toml文件中。

完成后,您将能够使用指令: image: my_image

但是,您还有另一个选择:您可以登录到您的 Docker 注册表,拉取并运行 CI Docker 映像,然后您可以在将要运行管道的地方执行 exec。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM