2014-09-03 84 views
1

如何持久化或版本控制构建修改的详细历史记录(而不仅仅是模板修改)?将构建定义更改合并到TFS 2013中的构建模板中

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

  • 在构建模板XAML文件,使用工作流设计器:
  • 直接生成定义,使用内建编辑:

我知道你可以版本控制XAML构建模板,编辑它,将其签入,并从刷新构建定义。问题是,某人如何走向另一条路 - 使用编译定义使用的相同编辑器编辑构建模板?实际的构建编辑器会暴露工作流设计器在未定义的变量中隐藏或抽象出的无数属性。

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

构建定义的变化并不是完全无法访问的代码,是吗?

编辑器的截图:

  • 编辑构建模板XAML文件,使用工作流设计器: Build template xaml in Workflow Editor

  • 直接编辑构建定义,使用团队生成编辑: Team Build editor

注意:微软的指南customizing your build process template没有解决这个问题。它描述了模板编辑&的部署,但并不涉及构建编辑器与模板编辑器(也称为工作流设计器)公开的属性的区别。

回答

2

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

标准参数和需要传递给测试运行任何参数,如运行设置文件。

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

如果你想申请的东西翻过多个构建,那么你需要自定义模板,对于暴露于可以提供缺省值生成定义参数。这意味着你的所有构建都将遵循相同的过程。

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

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

构建定义已经很难跟踪,因为它们存在于数据库中,并没有这样的源控制,如果安装了社区TFS构建经理,你可以右键点击一个构建定义和导出。你可以在Source控件中保存这个导出的文件。

“标准化”定义的另一种方法是创建一个您感到满意的定义,然后重复克隆它,然后这会给您与第一个创建的所有设置相同的设置,然后您就可以更新工作空间和解决方案文件

+0

我失踪快一个构建配置具有构建模板的属性的超集。现在它更有意义。 +1为社区TFS构建管理器的建议。它的'克隆Build'选项将解决我们很多的烦恼与重用建立专用于不同的解决方案设置。 – 2014-09-09 14:47:44