0

我正在构建一个VSTS构建管道,用于继续集成和部署MVC Web项目。我的客户想要0停机时间的情况下继续部署,以便我们考虑重组源控制策略和分裂单一代码库到以下几点:使用VSTS构建的部分部署 - 源代码控制策略

核心功能

  1. 特点1个
  2. 特点2 .. ...
  3. 功能ň

我们计划在保持特点的核心功能的子分支,并把个人的构建模板,每个branc的h和支行。因此,理想的情况是,如果核心功能分支有任何更改,则应该使用完整代码(分支+子分支)来部署构建,但如果只更改了一个功能分支,则将仅对该分支执行继续部署或分支中的功能。

因此,这需要指导的问题是: -

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

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

  • 特征1库调用特征2库,但是这种方法将使特征1对特征2具有依赖性,这意味着如果特征2在部署时关闭,则特征1也经历错误。

  • 将版本库拆分为若干功能是个不错的主意?

感谢

+0

对术语要小心。您使用术语“功能分支”的方式不是它在业内常用的方式。功能分支用于隔离开发新功能,而不是用于管理不同应用程序组件的持续长期开发。 –

+0

@Daniel Mann,同意你的评论。但我知道的其他已知术语是子模块源代码控制方法,我猜想它是为GIT源代码控制保留的。你能提出一个最适合这个问题的名字吗? – Riky

回答

0

拆分库的几个特点是确定的,因为他们可以在其他应用(如移动应用)

我建议你可以考虑VSTS Packages feature或其他第三包饲料中使用。工作流程:通过使用NuGet task

  • 安装需要的软件包到web项目和编码喂

    1. 更改推送到服务器>触发CI构建>包和发布包VSTS。
    2. Web项目的更改推送到服务器>触发CI建立与当前已安装的软件包(不更新包)
    3. 更新必要包的新功能Web项目
    4. Web项目的更改推送到服务器>触发CI build
  • +0

    这个答案与问题无关,我猜你应该再次读这个问题。 – Riky

    +0

    本主题中的问题太多,但它们与单独的存储库相关,如果相关项目需要使用新功能,我的观点是使用软件包管理并更新软件包。你困惑什么?你能否提供样本来解释它? –

    +0

    我们已经在使用Nuget Feed的包管理。这里的重点是获得有关如何拆分服务,存储库以及在拆分服务通信后使用继续部署过程实现部分部署的方式的建议。即使我们将存储库用作包,更改包对于所有引用存储库的服务都需要停机。我对吗? – Riky