持续集成运行者有权访问生产服务器

持续集成运行者有权访问生产服务器

我正在为产品设置 CI。我正在使用内部 Gitlab 服务器,其中 Gitlab CI 管理项目的测试和部署。

部署项目并不像同步文件那么简单。它需要构建、检查不一致之处,如果更新不成功则回滚。

我担心的是运行测试并管理新代码集成的 gitlab runner 实例可以访问生产实例。

我的第一个想法是让运行器简单地向生产服务器发送 HTTP POST 请求,要求它自行更新,然后报告成功还是失败的消息。这样,运行器就无法访问生产服务器上的文件系统,生产服务器可以决定是否响应该请求。这种方法的问题在于,POST 请求很可能会因等待响应而超时,因为构建不是即时的。

我的第二种方法是让 gitlab ci 运行器以受限用户身份无密码 ssh 登录到生产服务器,该用户的唯一目的是构建和运行项目,这样运行器就可以简单地使用 fabric 脚本来更新服务器并直接报告故障。这很容易实现,并且可以与 Gitlab CI 系统很好地配合使用。

更新:我尝试了 fabric 方法,但当运行器似乎不想登录时,它就停止了。那么您有什么想法?有什么 docker 魔法吗?

相关内容