0

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

核心功能

  1. 特色一
  2. 特色二……
  3. 特征 n

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

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

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

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

  • 功能 1 存储库调用功能 2 存储库,但是这种方法会带来功能 1 对功能 2 的依赖,这意味着如果功能 2 在部署时关闭,功能 1 也会遇到错误。

  • 将存储库拆分为多个功能是个好主意吗?

谢谢

4

1 回答 1

0

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

我建议您可以考虑VSTS Packages 功能或其他 3rd package feed。工作流程:

  1. 将更改推送到服务器 > 触发 CI 构建 > 使用NuGet 任务打包并将包发布到 VSTS源
  2. 将必要的包安装到 Web 项目和编码中。
  3. 将 Web 项目的更改推送到服务器 > 使用当前安装的包触发 CI 构建(不要更新包)
  4. 将必要的包更新到 Web 项目以获取新功能
  5. 将 Web 项目的更改推送到服务器 > 触发 CI 构建
于 2017-07-26T08:54:33.350 回答