【问题标题】:Merge build definition changes back into build template in TFS 2013将构建定义更改合并回 TFS 2013 中的构建模板
【发布时间】:2014-09-03 20:47:02
【问题描述】:

如何保存或版本控制构建修改的详细历史记录(不仅仅是模板修改)?

在使用 TFS 构建服务器的 Visual Studio 2013 中,我们知道您可以在两个地方编辑 TFS 构建配置(下面的屏幕截图):

  • 在构建模板 xaml 文件中,使用 Workflow Designer:
  • 直接在构建定义中,使用构建编辑器:

我知道您可以对 xaml 构建模板进行版本控制、编辑、签入,并从中刷新构建定义。问题是,有人怎么能走另一条路——使用构建定义使用的同一编辑器来编辑构建模板?实际的构建编辑器公开了 Workflow Designer 在未定义变量中隐藏或抽象出来的无数属性。

如何跨大量解决方案修改构建设置(例如运行设置、代码覆盖率和代码分析)?工作流设计器似乎没有公开这些,并且Download 链接产生的服务器端 xaml 中没有构建修改(我已经编辑并保存了构建,并区分了新旧 xaml;它们是完全相同的)。

构建定义更改并非完全无法作为代码访问,是吗?

编辑器截图:

  • 使用 Workflow Designer 编辑构建模板 xaml 文件:

  • 使用 Team Build 编辑器直接编辑构建定义:

注意:Microsoft 的customizing your build process template 指南没有解决这个问题。它描述了模板编辑和部署,但没有说明构建编辑器与模板编辑器(也称为工作流设计器)公开的属性的差异。

【问题讨论】:

    标签: xaml tfs visual-studio-2013 build-server


    【解决方案1】:

    从概念上讲,模板是驱动构建的工作流,模板公开了可由构建定义填充的参数。单个模板可以被多个构建定义使用,不同之处在于从构建定义传递到模板的参数。更改构建定义不会以任何方式改变模板

    传入的标准参数是工作区、要构建的解决方案以及需要传递给测试运行程序的任何参数,例如运行设置文件。

    我有一个标准模板,用于 95% 的构建,这是为更新程序集版本、运行 stylecop、在代码覆盖率低于阈值和其他小时间时显示警告而定制的。

    如果你想在多个构建中应用某些东西,那么你需要自定义模板,对于暴露给构建定义的参数,你可以提供默认值。这意味着您的所有构建都将遵循相同的过程。

    当您随后创建构建定义时,您可以使用相同的模板并仅提供特定于该构建的信息,例如解决方案文件和运行设置,您可以使用特定值覆盖您为模板中的参数创建的默认设置对于那个特定的构建。

    例如,在我的模板中,我有一个 TargetCodeCoverage 的参数,其默认值为 70,因此所有定义的默认值为 70,如果对于特定构建我想要 80,我可以更改该值在构建定义中。

    构建定义很难跟踪,因为它们存在于数据库中并且不受源代码控制,如果您安装社区 TFS 构建管理器,您可以右键单击构建定义并将其导出。然后,您可以将此导出的文件保存在源代码管理中。

    另一种“标准化”您的定义的方法是创建一个您满意的定义,然后重复克隆它,这将为您提供您在第一次创建的所有相同设置,然后您可以更新工作区和解决方案文件

    【讨论】:

    • 我错过了构建配置具有构建模板属性超集的速度。现在更有意义了。 +1 社区 TFS 构建管理器建议。它的Clone Build 选项将解决我们在不同解决方案中重用特定于构建的设置的许多难题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    • 2013-01-01
    相关资源
    最近更新 更多