我对持续集成服务器比较陌生。我一直在使用 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 运行器?