7

我仍然不太了解 gitlab-ci 多运行器启动 docker 并在内部与代码交互的过程。

gitlab-ci 多运行器是否可以在此 docker 容器中启动具有当前代码的 docker 容器,然后针对此代码运行测试?(例如:代码检查)

我基本上想要一个安装了各种 linter 的 docker 容器。GitLab-CI 多运行器应在主机系统上运行并按需启动 docker 容器。例如,在 docker 容器内,应根据 phpcs 检查代码。

如何将 repo 代码放入 docker 容器中?

谢谢您的帮助

4

3 回答 3

1

首先,gitlab-runner 需要按照文档中的描述安装 Docker 套接字:

docker run -d --name gitlab-runner --restart always \
 -v /var/run/docker.sock:/var/run/docker.sock \
 -v /srv/gitlab-runner/config:/etc/gitlab-runner \
 gitlab/gitlab-runner:latest

之后,您必须通过以下方式注册跑步者:

  1. docker作为执行者。
  2. 带有您想要作为 Docker 映像的 linter 的 Docker 映像。
于 2015-08-26T14:21:49.070 回答
0

每个docker client将命令转发给docker daemondocker 守护进程将侦听本地端口,例如 http、tcp 或 unix 套接字。

当你像这样启动容器时:

docker run -d --name gitlab-runner --restart always \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /srv/gitlab-runner/config:/etc/gitlab -runner \ gitlab/gitlab-runner:最新

所有 docker 命令将转发到主机,因为 docker 正在监听unix:///var/run/docker.sock

gitlab-runnerPS:你需要在容器中安装 docker

于 2015-09-29T07:45:32.580 回答
0

我知道这个问题很老,但我想我还是要回答它,因为我现在一直在做类似的事情,我想我想在更大的范围内回答它,给出一个基本的想法,一个起点,了解 GitLab-CI 的构建过程。

有多种方法可以在系统上安装 gitlab-runner,如此所述。它总是会开始安装跑步者,然后在你的 gitlab 实例中注册跑步者。

此处将指导您完成注册过程。在注册过程中,您必须选择将在其上实现构建的执行者。这些可以是 ssh、docker+machine、docker-ssh+machine、kubernetes、docker、parallels、virtualbox、docker-ssh 和 shell:docker。

假设你选择 docker 作为执行者。将构建传递给您的运行器后,它将启动一个构建容器,将在其中执行构建。在某些项目设置中,没有将图像定义为“基础环境”。因此,在(docker executor)运行程序注册期间,您将被要求定义一个可用作构建容器的默认映像,即构建的环境。

因此,如果您有一个没有定义“基础环境”的项目,您必须选择一个满足您构建需求的项目。例如,如果您运行在 ant 脚本中定义的构建,您将需要一个安装了 ant 的映像,或者您需要在 .gitlab-ci.yml 中设置 ant。

在 .gitlab-ci.yml 中,您将描述您的构建管道(在此处查看更多信息)。在那里,您还可以更精确地定义如何将您的 repo 克隆到您的构建容器中。但是在默认配置下,每次贡献者将代码库上的更改推送到 git(lab) 存储库时,都会发生克隆。

GitLab 要求您使用内置的 git 存储库。这使 GitLab 无需进一步配置即可克隆存储库(除了管理配置,您必须通过设置 GitLab 并对其进行维护)。

您可以使用其他容器(称为“服务”)来支持构建容器,例如在构建过程中运行测试的数据库容器。

有关详细信息,另请参阅https://docs.gitlab.com/runner/https://docs.gitlab.com/ee/README.html

于 2018-01-16T13:21:44.443 回答