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

时间:2014-11-11 17:13:10

标签: docker gitlab gitlab-ci

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

现在我想要实现的是安装持续集成系统。由于我正在使用Gitlab,我选择Gitlab CI,因为它感觉更自然的方式。所以我去了Docker回购,我找到了this image

所以我运行图像来创建一个包含以下内容的容器

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。到目前为止一切都很好。

我登录CI并且收到此消息:

Now you need Runners to process your builds.

所以我回到Docker Hub,找到了this other image。显然,为了启动这个图像,我必须以交互方式进行。我按照说明操作,它将创建配置文件:

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 (e.g. 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,而且很苛刻,跑步者出现在舞台上。

所有人似乎都很努力,但问题

如果我重新启动机器,由于更新或任何原因,跑步者不再在那里。当我运行跑步者的图像时,我可以在命令中添加--restart=always,但这会有问题,因为:

  1. 设置是交互式的,因此必须手动输入注册跑步者的令牌
  2. 每次重新运行带有Gitlab CI的容器时,注册新跑者的令牌都是不同的。
  3. 我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:0)

我有一种方法可以指出你正确的方向,但我试图自己做到这一点,希望我们都能设法让它成为我的情况。

我正在使用coreOS + docker尝试完成您正在尝试的操作,并且在coreOS中,您可以设置一个服务,每次重新启动计算机时启动CI(以及gitlab和其他)我的问题是试图制作同样的安装自动。

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

在本文档中,他们声明可以通过两种方式实现:

  • 1 - 挂载在包含/ root的凭据的.dockercfg文件中 目录

  • 2 - 使用以下信息启动容器:

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

  • -e REGISTRATION_TOKEN = 12345678901234567890 \

意思是您可以设置为使用您的配置自动启动CI,如果您设法做到这一点,我已经尝试了2天告诉我如何=(