我仍然不太了解gitlab-ci多跑者启动docker并与代码进行内部交互的过程 .
是否有可能gitlab-ci多个运行器启动一个docker容器,其中包含此docker容器中的当前代码,然后针对此代码运行测试? (例如:代码掉落)
我基本上想要一个安装了各种挂钩的docker容器 . GitLab-CI多跑者应该在主机系统上运行并按需启动docker容器 . 在docker容器内部,应该根据phpcs检查代码 .
如何将repo代码放入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
之后,您必须注册跑步者:
docker 作为遗嘱执行人 .
the Docker image with the linters you want 作为Docker镜像 .
每个 docker client 都会将命令转发给 docker daemon ,docker守护程序将侦听本地端口,如http,tcp或unix socket .
docker client
docker daemon
当你像这样启动容器时:
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
unix:///var/run/docker.sock
PS:您需要在 gitlab-runner 容器中安装docker
gitlab-runner
我知道这个问题已经过时了,但我想我无论如何都要回答,因为我此刻一直在研究类似的事情,我想我想更大规模地回答它,给出一个基本的想法,一个起点,使用GitLab-CI了解构建过程 .
有一种不同的方法可以在系统上安装gitlab-runner,如here所述 . 总是会安装跑步者,然后在你的gitlab实例上注册跑步者 .
将引导您完成注册过程here . 在注册过程中,您必须选择将在其上实现构建的执行程序 . 这些可以是ssh,docker机器,docker-ssh机器,kubernetes,docker,parallels,virtualbox,docker-ssh和shell:docker .
假设您选择docker作为执行者 . 一旦构建已经传递给您的运行器,它将启动一个构建容器,在该容器中将执行构建 . 在某些项目设置中,没有图像被定义为“基础环境” . 因此,在(docker executor)运行器注册期间,系统会要求您定义一个可用作构建容器的默认映像,即构建环境 .
因此,如果您的项目没有定义“基础环境”,则必须选择满足您的构建需求的项目 . 例如 . 如果你运行在ant脚本中定义的构建,你将需要一个安装了ant的图像,或者你需要在.gitlab-ci.yml中设置ant .
在.gitlab-ci.yml中,您将描述您的构建管道(see more about that here) . 在那里,您还可以更精确地定义如何将repo克隆到构建容器中 . 但是使用默认配置,每次贡献者将代码库的更改推送到git(lab)存储库时,都会发生克隆 .
GitLab要求您使用内置的git存储库 . 这使得GitLab无需进一步配置即可克隆存储库(除了管理配置,您还必须通过设置GitLab并对其进行维护) .
您可以使用其他容器(称为“服务”)来支持构建容器,例如用于在构建过程中运行的测试的数据库容器 .
有关详细信息,请参阅https://docs.gitlab.com/runner/和https://docs.gitlab.com/ee/README.html
3 回答
首先,gitlab-runner需要按照documentation中的描述安装Docker套接字:
之后,您必须注册跑步者:
docker 作为遗嘱执行人 .
the Docker image with the linters you want 作为Docker镜像 .
每个
docker client
都会将命令转发给docker daemon
,docker守护程序将侦听本地端口,如http,tcp或unix socket .当你像这样启动容器时:
所有docker命令都将转发给主机,因为docker正在侦听
unix:///var/run/docker.sock
PS:您需要在
gitlab-runner
容器中安装docker我知道这个问题已经过时了,但我想我无论如何都要回答,因为我此刻一直在研究类似的事情,我想我想更大规模地回答它,给出一个基本的想法,一个起点,使用GitLab-CI了解构建过程 .
有一种不同的方法可以在系统上安装gitlab-runner,如here所述 . 总是会安装跑步者,然后在你的gitlab实例上注册跑步者 .
将引导您完成注册过程here . 在注册过程中,您必须选择将在其上实现构建的执行程序 . 这些可以是ssh,docker机器,docker-ssh机器,kubernetes,docker,parallels,virtualbox,docker-ssh和shell:docker .
假设您选择docker作为执行者 . 一旦构建已经传递给您的运行器,它将启动一个构建容器,在该容器中将执行构建 . 在某些项目设置中,没有图像被定义为“基础环境” . 因此,在(docker executor)运行器注册期间,系统会要求您定义一个可用作构建容器的默认映像,即构建环境 .
因此,如果您的项目没有定义“基础环境”,则必须选择满足您的构建需求的项目 . 例如 . 如果你运行在ant脚本中定义的构建,你将需要一个安装了ant的图像,或者你需要在.gitlab-ci.yml中设置ant .
在.gitlab-ci.yml中,您将描述您的构建管道(see more about that here) . 在那里,您还可以更精确地定义如何将repo克隆到构建容器中 . 但是使用默认配置,每次贡献者将代码库的更改推送到git(lab)存储库时,都会发生克隆 .
GitLab要求您使用内置的git存储库 . 这使得GitLab无需进一步配置即可克隆存储库(除了管理配置,您还必须通过设置GitLab并对其进行维护) .
您可以使用其他容器(称为“服务”)来支持构建容器,例如用于在构建过程中运行的测试的数据库容器 .
有关详细信息,请参阅https://docs.gitlab.com/runner/和https://docs.gitlab.com/ee/README.html