Gitlab在Docker上的持续集成

时间:2016-11-27 00:56:31

标签: docker gitlab gitlab-ci

我在Docker容器上运行了一个Gitlab服务器:gitlab docker

在Gitlab上有一个带有简单Makefile的项目,它运行pdflatex来构建pfd文件。

在我安装了texlive和make的Docker容器上,我还安装了docker runner,命令:

curl -sSL https://get.docker.com/ | sh

.gitlab-ci.yml如下所示:

.build:
  script: &build_script
  - make

build: 
  stage: test
  tags:
    - Documentation Build
  script: *build

作业停止运行并显示一条消息:

This build is stuck, because the project doesn't have any runners online assigned to it 

任何想法?

3 个答案:

答案 0 :(得分:1)

我觉得你在这里有些困惑。从这个评论判断:

  

在Docker容器上我安装了texlive和make,我也安装了   docker runner,命令:

     

curl -sSL https://get.docker.com/ | SH

看来你已经在docker中安装了docker而没有实际安装任何跑步者?如果是这样的话,这将不起作用。实现这一目标的步骤是:

  • 部署新的gitlab运行器。最快的方法是使用gitlab runner docker image部署另一个 docker容器。您无法在已部署gitlab的docker容器中运行一个运行器。您需要确保选择一个执行程序(我建议使用shell执行程序让您入门),然后您需要注册运行程序。有关如何执行此操作的更多信息here。这里没有详细说明,如果您使用docker for gitlab和docker for gitlab-runner,则需要link the containers或设置docker network以便他们可以相互通信< / LI>
  • 一旦你使用gitlab部署和注册了跑步者,你会看到它出现在http(s):// your-gitlab-server / admin / runners中 - 从这里你需要将它分配给一个项目。您也可以将其作为“共享”运行器,它将执行所有项目中的作业。
  • 最后,添加您已有的.gitlab-ci.yml,构建将按预期工作。

答案 1 :(得分:1)

您链接的最高评论位于:

&#34; Gitlab很好,但这个容器绝对是疯子。&#34;

其次关注gitlab's own advice你应该不要在Windows上使用这个容器

如果你想从Gitlab服务器使用Gitlab-CI,你应该在一个适当的支持Linux VM上使用Omnibus安装一个合适的Gitlab服务器实例,并且不应该试图将这个容器用于显而易见的目的不适合:运行Gitlab的真实生产方式。

Gitlab-omnibus包含:

  1. 由postgres提供支持的持久性(非无状态!)数据层。

  2. 一个聊天服务器,其中现有的全部内容是您的团队聊天的持久日志。

  3. 不是一个,而是一系列服务器进程,它们协同工作,为您提供gitlab服务器功能和Web管理/管理前端,这个设计似乎不适合我在docker中的生产中运行。< / p>

  4. 一个集成的CI构建管理器,本身就是Docker容器管理器。您的docker实例将包含其他docker实例的缓存。

  5. 这个容器是由Gitlab本身构建的,并没有迹象表明你实际上应该将它用于测试/玩具以外的任何东西,或者Gitlab自己实际使用它的东西,这可能是为了让人们在夜间构建Gitlab,可能是通过kubernetes。

答案 2 :(得分:0)

也许您像我一样设置了错误的标签。确保标签名称带有可用的运行器。

tags - Documentation Build # tags is used to select specific Runners from the list of all Runners that are allowed to run this project.

请参阅:https://docs.gitlab.com/ee/ci/yaml/#tags