以 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的主要内容,如果未能解决你的问题,请参考以下文章