【问题标题】:How to setup Incremental Build in TFS?如何在 TFS 中设置增量构建?
【发布时间】:2020-04-26 01:13:13
【问题描述】:

我想在 TFS 中设置增量构建,因为我们只想将修改后的文件部署到物理路径,而不是整个代码。

我们希望该功能仅构建和部署从先前部署中更改的文件。这将减少构建和部署时间,开发人员无需等待更长时间即可看到他们的更改已部署。

【问题讨论】:

  • 我很确定你需要解释你正在构建什么以及如何构建——也许还需要详细说明构建需要多长时间以及你的目标是什么。

标签: tfs


【解决方案1】:

您所描述的不是“增量构建”。您描述的情况比增量构建复杂得多。

您所描述的从来都不是一个开箱即用的选项,实际上很难正确地做到这一点,而且最终可能不会像您希望的那样影响事情。

首先,实际上非常困难要确定在部署之间发生更改的文件子集。如果您正确地构建和部署,那么您就是在构建一个单一的构建并沿着环境管道部署它。这意味着在任何给定时间,对于管道中的每个环境,“有什么不同”都可能不同。例如:DEV 有第 5 版,QA 有第 4 版,PROD 有第 3 版。所以您必须首先假设您要使用最旧的版本。构建系统没有与生俱来的“发布”知识,因此您必须在构建和发布管道中构建一些东西,以跟踪哪个源版本构成了生产中的最新代码。

假设您已经解决了这个问题。您现在可以仅检索部署到生产的内容与正在构建的提交之间的增量。

如果您使用的是编译后的代码,那么您仍然需要所有源代码,因为您将不得不重新构建整个代码。每个程序集都会重新生成,编译时不同的元数据意味着这些程序集是不同的,即使构成这些程序集的代码是相同的。由于程序集可以引用其他程序集,因此您无法在构建时确定哪些程序集实际已更改并需要部署。因此,您几乎别无选择,只能每次部署所有已编译的资产。请注意,这仍然适用于 TypeScript 或通过编译器/转译器过程的任何其他东西;您需要所有可用的代码,并且它必须经过整个构建过程。

所以此时,您仍然需要构建整个应用程序才能获得可部署的输出。构建时间根本没有减少。不过,您已经设法降低了要部署的静态内容的子集(即 HTML 页面、图像等)。这可能加快了您的部署速度!

但是,如果让您的构建和部署过程变慢的原因是您拥有大量与代码无关的静态内容,那么您已经经历了一个非常漫长而复杂的过程来获得一个更简单的解决方案:将静态内容移动到 CDN 并使其脱离源代码控制,或者拥有一个单独的进程来管理静态内容,以便可以独立于不相关的应用程序代码进行部署。

您还没有真正提供任何可用于提供有关如何进行的建议的信息,但希望此答案有助于理解为什么您想要做的事情不会解决您的问题,除非您正在处理完全包含不需要构建的静态内容或脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 2023-03-25
    • 2019-12-22
    • 2017-03-26
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多