我目前正在生产中运行后端,并想更改我们当前的设置以使用 Docker 进行部署并使用 CI 工具进行测试。
目前,我有一个 BitBucket 存储库,其中包含两个主要分支“develop”和“master”,以及两个用于开发和生产的独立服务器,它们通过我在本地触发的 shell 脚本从各个分支提取代码。这样,我就可以在完全隔离的环境中手动测试更改,使用开发服务器和开发数据库,然后再合并到 master 并部署到生产环境。
git Repository dev-server prod-server
| +----------+ +----------+
|-- develop | | | |
|-- master | pulls | | pulls |
| develop | | master |
| | | |
+----------+ +----------+
我想通过编写测试并使用 Docker 和 CI 工具(如 Drone(它是 Go 后端)或 Jenkins)来改变这种情况,但我不知道这一切如何协同工作。我已经阅读了很多关于 Docker 的文章,大多数教程都假设您在本地开发,然后将容器直接部署到生产服务器。另外我猜 CI 工具应该位于开发服务器上?
有人能向我解释一下在我的场景中可能的流程是怎样的吗?
示例:我在本地进行更改,然后推送到“开发”。开发服务器有一个 git hook,可以识别推送并以某种方式触发运行测试的 CI 服务器。如果测试通过,它可以将develop合并到master(现在是这个CD吗?),这再次触发了生产服务器上的钩子,该钩子构建了新的映像并运行了容器。对吗?另外,现在哪个服务器托管docker repo?