为多个Git分支创建分阶段服务器的解决方案

55次阅读
没有评论

问题描述

希望为多个Git分支创建一个新的分阶段(staging)过程,以用于开发和测试。在任何时候,只有大约4个Git分支处于活跃开发和测试状态。在每个Git分支内,可能会有数据库演化脚本(纯粹的SQL),还可能有来自后端的演化脚本用于更重的处理(本质上是需要使用管理员凭据在应用中调用的HTTP路由,执行数据库迁移和其他无法在前述纯粹SQL演化脚本中编写的更改)。

用户的实时数据库大小适中,约为4.2 GB。他们有一台全新的Dell PowerEdge服务器可以用于设置,并可供使用。

他想要了解以下问题的建议,以及更有经验的DevOps如何处理这些问题:
1. 如何在分阶段服务器上运行多个不同的分支?这些分支会在通过QA测试并合并到主分支后频繁出现和消失。
2. 如何设置数据库演化系统,以确保每个分支始终具有适用的数据库?每个分支可能以不同的方式对数据库进行修改,在合并之前可能不一定与其他分支兼容。
3. 如何保持这些分支的更新?是否有自动拉取每个分支提交的方法?

用户还希望获得更多的建议,因为他对如何设置所有这些感到有些困惑。当前的工作流程对所有参与者来说都很困难:开发人员在本地运行一个完全隔离的应用副本,而QA使用3-4台轮换的笔记本电脑作为其分阶段“服务器”。

解决方案

请注意以下操作中的版本差异及修改前的备份。

运行不同分支的解决方案

对于在分阶段服务器上运行不同分支的问题,您可以考虑以下方法:

  1. 使用URL的一部分来切换执行的代码分支。您可以使用通配符DNS(使任何foo.our-dev-domain.com重定向到同一台服务器)和路由代码来加载包含路径中的/our/release/directory/foo

  2. 使用自动化部署工具,如Ansible,通过命令来添加适当的配置,以便为每个分支创建必要的设置。这可能是部署过程的一部分。

设置数据库演化系统的解决方案

要确保数据库演化系统始终具有适用于每个分支的适当数据库,您可以考虑以下方法:

  1. 鼓励开发人员使用短命名分支,以减少分支之间的冲突。较短的生命周期分支可以减少对数据库的不兼容性修改。

  2. 使用动态路由代码,根据分支的名称切换到不同的数据库副本。这可以通过不同的数据库名称来实现。

保持分支更新的解决方案

要保持分支的更新,您可以考虑以下方法:

  1. 使用自动化工具,如cron作业,定期执行git pull(或更好地,git fetchgit reset --hard)以拉取分支上的提交。

  2. 使用Webhook触发,通过监听推送触发自动部署,然后在服务器上更新仓库。

  3. 为开发人员提供一个部署命令,让他们能够自主地更新服务器上的分支。

请与用户讨论并了解他们的需求,以确定最适合他们的更新策略。

总结

对于您的情况,建议将重点放在解决实际问题上,而不是尝试在共享开发服务器上运行分支。您可以考虑使用更现代的工具和流程,如GitLab、Kubernetes集群和自动部署,以更好地管理不同分支的开发、测试和部署过程。这将能够为每个分支创建独特的URL,以进行测试和演示。

为了改善您的工作流程,您还可以鼓励开发人员在本地运行开发服务器,并为QA团队提供更可靠的测试环境,以便更好地管理代码的不同阶段。

正文完