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