使用VSTS构建的部分部署 - 源控制策略

时间:2017-07-26 03:46:08

标签: asp.net-mvc version-control azure-devops azure-pipelines-release-pipeline feature-branch

我正在构建一个VSTS构建管道,用于继续集成和部署MVC Web项目。在继续部署的情况下,我的客户希望0停机时间,因此我们考虑重构源控制策略并将单个代码存储库拆分为以下内容:

核心功能

  1. 功能1
  2. 功能2 .....
  3. 功能n
  4. 我们计划将功能保留为Core功能的子分支,并为每个分支和子分支放置单独的构建模板。因此理想的情况是,如果核心功能分支发生任何变化,则应使用完整代码(分支+子分支)部署构建,但如果仅更改1个功能分支,则仅对该分支执行继续部署或分支中的功能。

    所以需要一些指导的问题是: -

    • 功能分支的想法是否合适,是否可用于生产?
    • .Net MVC应用程序是n层应用程序,它具有Web层,服务和存储库层。我是否应该在核心和功能分支中拆分服务和存储库层以使其分离?
    • 如果我拆分服务和存储库,应该如何在不同的功能之间进行通信:

    • 通过服务到服务电话?就像功能1需要功能2的某些功能一样,功能1服务调用功能2服务并合并结果以将其发送到功能1 GUI?

    • 功能1存储库调用功能2存储库,但此方法将使功能1在功能2上的依赖性意味着如果功能2在部署时关闭,功能1也会遇到错误。

      < / LI>
    • 将存储库拆分为多个功能是个好主意?

    由于

1 个答案:

答案 0 :(得分:0)

将存储库拆分为多个功能是可以的,因为它们可以在其他应用中使用(例如移动应用)

我建议您考虑VSTS Packages feature或其他第3个套餐Feed。工作流程:

  1. 将更改推送到服务器&gt;触发CI构建&gt;使用NuGet task
  2. 将软件包打包并发布到VSTS Feed
  3. 为Web项目和编码安装必要的包。
  4. 将Web项目的更改推送到服务器&gt;使用当前安装的软件包触发CI构建(不要更新软件包)
  5. 将必要的软件包更新到Web项目以获取新功能
  6. 将Web项目的更改推送到服务器&gt;触发CI构建