开发、预发布和生产环境的Subversion规划

3
我正在计划重组我们的Subversion流程和部署,以尽量减少代码丢失和生产部署问题。我们目前的系统只是在推出之前在随机服务器上创建一个子域名进行测试,这让我很烦恼。
我想听听有关我的当前计划的建议或意见,并获得反馈或想法,以使该系统更好。
细节:
- 小型开发团队。 - 开发和暂存存在于同一台机器上。 - 生产版本存在于其他服务器上。 - 大约有30个项目与Web相关(网站、Web应用程序、Web服务)。 - 大约有30个项目是桌面应用程序、DLL、组件、批处理文件等。 - Dev子域名仅通过VPN访问。 - Web的暂存子域名可以公开访问。exe暂存仅可通过VPN访问。 - 每个项目将有一个dev和staging子域名和存储库。Dev版本是staging trunk的分支。 - 主要的开发存储库:dev.domain.com(示例中使用通用名称)。 - 主要的staging存储库:staging.domain.com(示例中使用通用名称)。
部署:
项目的开发版本是staging trunk的分支。Staging保存特定项目的存储库。然后手动复制文件到生产位置或执行部署脚本。
例如:开发人员使用从projectname.projecttype.dev.domain.com(site1.web.dev.domain.com)获得的本地副本。对本地版本进行更改,并将其合并到项目dev分支以进行测试。完成所有测试后,将分支合并到项目主干。如果项目主干通过了所有测试,则推出该项目。
Subversion存储库结构: *注意:文件结构将与域名的结构匹配。*
开发分支:始终在此服务器上检出以进行本地开发环境。
             dev.domain.com 
         web.dev.domain.com 
   site1.web.dev.domain.com
   site2.web.dev.domain.com

         exe.dev.domain.com
    app1.exe.dev.domain.com
    app2.exe.dev.domain.com

暂存主干:从未被开发人员触碰。文件仅通过将分支合并到特定项目的主干中进行更新。 在推送到线上之前进行测试安装。应该被认为是生产可用的,但不可被客户访问。

             staging.domain.com
         web.staging.domain.com
   site1.web.staging.domain.com
   site2.web.staging.domain.com

         exe.staging.domain.com
    app1.exe.staging.domain.com
    app2.exe.staging.domain.com

这个看起来怎么样?我有没有遗漏或者将要失去的功能?是否有更好的系统我应该使用?


我不太确定你在问什么。你的部署工作流程有问题吗?还是你的代码库布局或测试策略有问题? - Rudi
1个回答

1

看起来不错。基本上,您有“功能分支”用于开发与每个发布分支(主干)隔离的内容,对于这些内容,您已经制定了“不接触”政策,因此它们在90%的时间内应具有发布质量。 您可以为您的发布添加标签,以便您确切地知道已发布了什么(如果出现问题,还需要回滚哪些内容)。

只要开销可控,就保持项目隔离。

点赞。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接