首页 文章

GitLab-CI多跑者开始泊坞容器

提问于
浏览
6

我仍然不太了解gitlab-ci多跑者启动docker并与代码进行内部交互的过程 .

是否有可能gitlab-ci多个运行器启动一个docker容器,其中包含此docker容器中的当前代码,然后针对此代码运行测试? (例如:代码掉落)

我基本上想要一个安装了各种挂钩的docker容器 . GitLab-CI多跑者应该在主机系统上运行并按需启动docker容器 . 在docker容器内部,应该根据phpcs检查代码 .

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

谢谢您的帮助

3 回答

  • 0

    首先,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镜像 .

  • 1

    每个 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-runner:latest

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

    PS:您需要在 gitlab-runner 容器中安装docker

  • 0

    我知道这个问题已经过时了,但我想我无论如何都要回答,因为我此刻一直在研究类似的事情,我想我想更大规模地回答它,给出一个基本的想法,一个起点,使用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

相关问题