6

我对持续集成服务器比较陌生。我一直在使用 GitLab (v6.5) 来管理项目,但我想开始使用 GitLab CI 来确保测试通过并成功构建。

我的测试设置由两台虚拟机组成:一台用于 GitLab,另一台用于 GitLab CI(和运行器)。但是,在生产中,我只有一台运行 GitLab 的机器。GitLab 团队不久前发布了一篇有趣的博客文章,强调:

如果你在 CI 服务器上运行测试,那你就错了!

这是一篇内容丰富的帖子,但我并没有觉得我理解了这一点。这是否意味着不应该在同一台服务器上运行 GitLab 和 GitLab CI?这是否意味着不应该在同一台服务器上运行 GitLab CI 和 GitLab CI 运行器?或者两者兼有——我是否需要三台服务器,每个任务一台?

来自同一篇文章:

任何可以推送到在 CI 服务器上测试的分支的人都可以轻松拥有该服务器。

这对我来说意味着跑步者存在安全风险,因为他们可以运行提交中包含的内容。如果是这样,典型的实现是什么?将 GitLab 和 GitLab CI 放在同一台机器上,但运行器放在不同的机器上?如果 runner 机器被攻破了,岂不是很糟糕?所以只要他们的密码机是安全的,人们就可以丢失他们的跑步机吗?

我真的很想进一步了解这一点——绝对是在我在生产中实现它之前。是否有任何可能但安全的方法可以在同一台机器上实现 GitLab、GitLab CI 和 GitLab CI 运行器?

4

1 回答 1

5

理想情况下,您可以在同一主机上运行 gitlab-ci 和 gitlab。其他人可能不同意我的观点,但 orechestrator(gitlab-ci 节点)并没有做任何繁重的工作。它严格执行元 IO 和仓储结果。

话虽如此,我不会将跑步者放在同一台机器上。Gitlab-CI Runners 是资源密集型的,并且将在您放置它们的任何机器上全速执行。如果您在生产环境中运行以将这些实例放在现场实例上以帮助抑制运行经常需要 cpu/内存的构建的一些成本,那么这是一个好主意 - 但可能不切实际,因为此时您的实例并不总是处于打开状态。

我在小型实例上将我的 gitlab-ci 跑步者放入数字海洋中取得了一些成功。我没有进行 HUGE 构建,但我的想法是将工作负载分配给多个服务器,因此您的 CI 服务器:

  • 反应灵敏
  • 可以一次构建多个项目构建
  • 可以进行隔离(这在此列表中是任意的)

以及其他一些不会马上想到的事情。

希望这可以帮助!

于 2014-05-14T01:00:42.067 回答