使用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
,但是这样会造成问题,因为:
- 该设置是交互式的,所以注册跑步者的记号必须手动input
- 每次使用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项,如果你设法告诉我如何=(