【问题标题】:Deploying a distributed .net system with multiple solutions部署具有多种解决方案的分布式 .net 系统
【发布时间】:2011-05-17 10:44:12
【问题描述】:

我们有一个分布式 .net 系统,它由多个解决方案组成,每个解决方案都有不同的配置和部署需求。目前所有代码都在一个 TFS 项目中,每个解决方案都有自己的构建。这些配置为触发该解决方案源代码管理文件夹中的更改。

我们正在迁移到 Team City、Git 和 rake(由于易于分支和许可成本),因此正在审查整个构建过程,但无法找到有关这方面的良好信息。我们正在努力解决的问题是:

  1. 我们应该有单独的构建还是一个大型构建?需要构建和部署所有解决方案才能使系统正常运行,但最好有小型构建,因为它们快速且易于调试。有些解决方案比其他解决方案更“独立”。我们目前的做法主要是在我们想要部署到测试或生产环境时将所有构建排入队列,但有时我们只是将单个解决方案排入队列,如果这一切都发生了变化。

  2. 我们应该将所有解决方案存储在一个存储库中,还是应该为每个解决方案创建一个存储库?我们使用了一些共享项目和 dll,它们如何与单独的存储库一起使用?

【问题讨论】:

    标签: .net git tfs projects-and-solutions distributed


    【解决方案1】:

    存储存储库、执行构建和部署实例的方式有很多种。他们中的许多人是对的。从我的实践来看,你使用什么技术以及构建和部署什么工具并不重要。因此,提出影响这些过程的问题很重要:

    • 防止弄乱可分离的解决方案/项目(作为独立的)。 如果一个项目在几个解决方案之间共享,那么最好为它创建一个单独的存储库。只需将依赖解决方案/项目的关系添加到此;
    • 防止在为不同目的生成不同构建期间出现问题(换句话说,配置管理)。 您可以为此调整 TeamCity(主要用于在每次“提交”或基于时间的计划后构建和部署自动化),或者使用一些简单但功能强大的实用程序,例如具有预定义配置的 NAnt。

    所以我认为没有理由进行大型构建(可能仅在发布时),但单独的构建会更易于使用(对于 QA 和仅在某些部分工作的开发人员)。第二个问题是时间。例如,要在一个解决方案中对所有项目进行完整构建,在 Quad cpu 8gb ram 上大约需要 10 分钟,但要使用会计部分或注册部分进行构建只需要 1 分钟 - 这对我来说很重要。试着想象这个过程,在一张纸上画画,然后就清楚了——做什么,为什么做。

    所有意见仅基于我的实践,在成功的项目中,每天/晚上都在经历变化,并且有数十种配置(您的构建)。

    【讨论】:

    • 我不完全理解你的回答。究竟什么是“解决方案/项目的混乱”?为什么要为共享项目创建单独的存储库?我们将所有解决方案都放在一个存储库下的文件夹中,并使用相对路径来共享项目(在 Visual Studio 中添加现有项目)。您是否建议我们将项目分支到我们所有的解决方案中(这有合并开销)?我们考虑一个大型构建的唯一原因是大多数构建相互依赖。
    • 解决方案/项目混乱 - 意味着太大的解决方案会使大多数使用它的人(开发人员、质量保证人员、代码审查人员)感到困惑。如果需要,则更难拆分功能(例如,您的客户只想拥有几个功能),但是您的开发人员在项目之间添加了过多的依赖关系(有时会发生)。拆分解决方案时 - 单独维护每个部分更容易
    • 关于存储库。当您在一个存储库中拥有所有解决方案时 - 它会使一些 SourceControl 命令更难使用:Branch、Merge、...
    • 关于“在 Visual Studio 中添加现有项目”。如果共享项目是“独立的”并且可能像组件一样使用,我不会将此项目包含在解决方案中,但会作为参考添加。原因:1) 引用的 dll 也可以在存在 .pdb 文件和正确的源位置(每次编译后存储在 .pdb 中)的情况下进行调试。 2) “解决方案资源管理器”列表中的每个附加项目都会增加一些 Visual Studio 性能问题。更少的项目 + 更少的成员 = 当 VS 有时冻结和思考某事时,它的响应时间更好
    • 所以我的观点可以用一句话来表达:简化方法——简化生活。 “我不完全明白你的回答。” - 抱歉,英语不是我的母语;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 2010-10-06
    • 2012-03-15
    • 2015-07-30
    • 1970-01-01
    相关资源
    最近更新 更多