【问题标题】:use image from gitlab Registry in CI在 CI 中使用来自 gitlab Registry 的图像
【发布时间】:2020-03-22 21:17:50
【问题描述】:

你能告诉我我的做法是否正确吗:

  • 我已经创建了包含在 gitlab CI 中运行测试所需的所有内容的 Docker 映像
  • 我将它推送到 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 中发生相同变化时构建新映像,最好的方法是什么?

【问题讨论】:

    标签: docker gitlab


    【解决方案1】:

    现在可以使用 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

    【讨论】:

      【解决方案2】:

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

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

      为了使用您为 CI 构建的映像,您首先需要将其作为 添加到运行器的 config.toml 文件中服务

      一旦你这样做了,你就可以使用指令:image: my_image

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

      【讨论】:

        猜你喜欢
        • 2016-11-11
        • 2022-03-29
        • 1970-01-01
        • 2021-11-28
        • 2019-02-02
        • 1970-01-01
        • 2022-12-10
        • 1970-01-01
        • 2017-04-08
        相关资源
        最近更新 更多