以 shell 执行器和 docker 镜像为基础的 Gitlab CI

Posted

技术标签:

【中文标题】以 shell 执行器和 docker 镜像为基础的 Gitlab CI【英文标题】:Gitlab CI with shell executor and docker image as base 【发布时间】:2020-02-24 04:53:01 【问题描述】:

我在使用 gitlab-ci 和 docker 映像时遇到问题。在互联网上搜索了很多,仍然感到困惑。

问题:我需要使用 docker 镜像作为我的 gitlab ci 构建的基础。

我正在使用 shell 执行器,在我的 gitlab-ci.yml 中我定义了这样的图像:

image: "registry.gitlab.com/my_projects/my_repo:latest"

我已将此 docker 图像推送到 gitlab 注册表。它包含我构建所需的核心库(ruby、node、npm 等)

我还在 gitlab-runner/config.toml 文件中定义了 [runners.docker] 设置, 其中有一些这样的行:

[[runners]]
  executor = "shell"
  [runners.docker]
    services = ["registry.gitlab.com/my_project/my_repo:latest"]

问题是 gitlab-runner 忽略了该图像。

这是我使用的教程:

https://dev.to/zimski/the-complete-guide-to-setup-a-cicd-for-rails-5-on-gitlab-2f2d

是否可以在 gitlab-ci 中使用 docker 镜像作为 shell 执行器的基础?

【问题讨论】:

【参考方案1】:

当您使用 shell 执行器时,您的作业将被执行,就像您手动运行该 shell 一样。如果您想使用 docker 镜像进行构建,您只需像在 shell 中使用 docker 镜像构建时一样手动执行即可。

从你写的方式来看,你想在你的 .gitlab-ci.yml 文件中使用image 标记并且你正在设置[runners.docker] 设置,听起来你想使用 docker 执行器。您可以在注册跑步者时选择它而不是 shell 执行器。您可以在此处找到有关执行者的更多信息:

https://docs.gitlab.com/runner/configuration/advanced-configuration.html#the-executors

【讨论】:

以上是关于以 shell 执行器和 docker 镜像为基础的 Gitlab CI的主要内容,如果未能解决你的问题,请参考以下文章

docker run

10.Docker之CMD指令

Docker镜像的构成__docker commit

docker镜像管理基础

怎么在服务器上制作docker镜像

Linux|Docker镜像|以centos7为基础镜像制作一个目标镜像