使用Docker为Ci和Runners安装Gitlab CI,并在重启后使其持久化

我有一个运行Gitlab的服务器。 假设地址是https://gitlab.mydomain.com

现在我想要实现的是安装一个持续集成系统。 因为我正在使用Gitlab,所以我select了Gitlab CI,因为它感觉更自然。 所以我去Docker回购,我发现这个形象 。

所以我运行图像创build一个容器与以下

 docker run --restart=always -d -p 9000:9000 -e GITLAB_URLS="https://gitlab.mydomain.com" anapsix/gitlab-ci 

我给它一分钟启动,我现在可以通过URL http://gitlab.mydomain.com:9000访问CI。 到现在为止还挺好。

我login了CI,我受到这个消息的欢迎:

 Now you need Runners to process your builds. 

所以我回到了Docker Hub,我find了这个其他的图片 。 显然要启动这个图像,我必须做到交互。 我按照说明,它会创buildconfiguration文件:

 mkdir -p /opt/gitlab-ci-runner docker run --name gitlab-ci-runner -it --rm -v /opt/gitlab-ci-runner:/home/gitlab_ci_runner/data sameersbn/gitlab-ci-runner:5.0.0-1 app:setup 

交互式设置会询问我需要的正确数据:

 Please enter the gitlab-ci coordinator URL (eg http://gitlab-ci.org:3000/ ) http://gitlab.mydomain.com:9000/ Please enter the gitlab-ci token for this runner: 12345678901234567890 Registering runner with registration token: 12345678901234567890, url: http://gitlab.mydomain.com:9000/. Runner token: aaaaaabbbbbbcccccccdddddd Runner registered successfully. Feel free to start it! 

我去http://gitlab.mydomain:9000/admin/runners ,而且hooray,跑步者出现在舞台上。

所有似乎都很好,但问题来了

如果我重新启动机器,由于更新或任何原因,跑步者不在了。 当我运行亚军的图像时,我可能会在命令中join--restart=always ,但是这样会造成问题,因为:

  1. 该设置是交互式的,所以注册跑步者的记号必须手动input
  2. 每次使用Gitlab CI的容器重新运行时,注册新的跑步者的令牌都是不同的。

我怎么能解决这个问题?

我有办法指引你正确的方向,但即时尝试自己做,希望我们都设法得到它inheritance我的局面。

即时通讯使用coreOS + docker试图做你正在做的事情,在coreOS中,你可以设置一个服务,启动CI每当你重新启动机器(以及gitlab和其他),我的问题是试图做同样的安装自动。

经过一些挖掘,我发现这个: https : //registry.hub.docker.com/u/ubergarm/gitlab-ci-runner/

在这个文档中他们声明他们可以通过两种方式来完成:

  • 将包含凭据的.dockercfg文件安装到/ root目录中

  • 2 – 用这个信息开始你的容器:

  • -e CI_SERVER_URL = https://my.ciserver.com \

  • -e REGISTRATION_TOKEN = 12345678901234567890 \

这意味着你可以设置为自动启动configuration文件configuration项,如果你设法告诉我如何=(