GitLab-CI 多运行程序启动 docker 容器

GitLab-CI multi runner start docker container

我还是不太明白 gitlab-ci multi 运行ner 启动 docker 并在内部与代码交互的过程。

gitlab-ci multi 运行ner 是否可以启动一个 docker 容器,在这个 docker 容器中包含当前代码,然后 运行 测试这段代码? (例如:代码检查)

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

如何将回购代码放入 docker 容器?

感谢您的帮助

首先,gitlab-runner 需要按照 documentation:

中的描述安装 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. 带有您想要的 linter 的 Docker 图像 作为 Docker 图像。

每个 docker client 将命令转发到 docker daemon,docker 守护程序将监听本地端口,例如 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:latest

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

PS:您需要在 gitlab-runner 容器

中安装 docker

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

在系统上安装 gitlab-运行ner 有不同的方法,如 here 所述。它总是会开始安装 运行ner,然后在您的 gitlab 实例上注册 运行ner。

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

假设您选择docker作为执行人。将构建传递给您的 运行ner 后,它将启动一个构建容器,构建将在其中进行 执行。在某些项目设置中,没有图像定义为 'base environment'。所以在 (docker executor) 运行ner 注册期间你会被问到 定义可用作构建容器的默认图像,即构建环境。

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

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

GitLab 要求您使用内置的 git 存储库。这使 GitLab 无需进一步配置即可克隆存储库(除了管理配置外,您还必须完成 GitLab 的设置和维护)。

您可以使用额外的容器(称为 'services')支持构建容器,例如在构建过程中 运行 用于测试的数据库容器。

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