为一个解决方案发布多个项目

Posted

技术标签:

【中文标题】为一个解决方案发布多个项目【英文标题】:Releasing multiple projects for one solution 【发布时间】:2015-05-27 13:26:49 【问题描述】:

我有一个包含一个 s-s-rS 项目、两个 SSIS 项目、一个 SSAS 项目和一个 SQL Server 项目的 Visual Studio 解决方案。我正在使用 TFS2013 更新 4。

我想在两个环境中使用 TFS 发布管理部署此解决方案。第一个环境应在开发人员签入后“填充”,而在第二个环境中,项目应仅在第二天晚上部署(白天环境由测试人员使用,新部署可能会影响他们的数据)。

使用 TFS Release Manager 2013.4 可以实现这一点吗?

更新 1:

单个门控签入构建需要太多时间,这就是为什么此时我为每个项目单独设置门控签入构建,以便将开发人员的等待时间降至最低。

更新 2:

当前设置包含五个门控签入构建,用于构建每个项目并将其部署到第一个环境,以及一个夜间构建,用于构建整个解决方案并将其部署到第二个环境。

【问题讨论】:

您希望完全自动化,还是可以接受每日手动干预以部署到第二个环境? 接受手动干预,因为它可以通过 API 自动化。 您是否打算通过 API 启动 RM,因为 RM 模板只能指向一个构建定义?实际上,您能否多谈谈第一个环境中发生的事情,因为您的设置感觉最终会变得非常复杂,而事实证明这些复杂性是不必要的。 或者你可以有一个额外的“收集器”构建,你会自动从其他人那里排队,目的是收集工件并成为 RM 的参考 @GiulioVian 这似乎是最优雅的解决方案;如果您将其添加为答案,我可以标记它。 【参考方案1】:

添加一个额外的“收集器”构建,您可以自动将其与其他旨在收集工件并作为 Release Manager 参考的其他构建排队。

换句话说,假设您有五个 CI 构建,每个项目对应一个名为 CI1 到 CI5 的项目。在每个 CI post-test script 中运行类似的命令

TFSBuild start /collection:%TF_BUILD_COLLECTIONURI% /buildDefinition:Collector /queue /msBuildArguments:CIDrop=%TF_BUILD_DROPLOCATION%

Collector 构建排队。 后者从父构建中收集工件和剩余 CI 构建的最后一个已知良好工件,并将它们复制到其放置位置。

现在您可以像往常一样在此 Collector 构建中使用 Release Manager。

【讨论】:

以上是关于为一个解决方案发布多个项目的主要内容,如果未能解决你的问题,请参考以下文章

在多个平台的解决方案中构建 Visual Studio C++ 项目

在 Visual Studio 中为单个解决方案编译和使用多个项目

VS2012在一个解决方案中发布多个项目

具有共享库的多个项目/解决方案的源代码控制

Roslyn:如何将多个项目的编译合并为 1 个单独的编译?

如何将同一解决方案中的多个网站项目发布到一个文件夹?