定义封闭签入生成以验证更改

开发人员签入的更改中断生成时,对小团队造成的后果可能是大麻烦, 而大型团队则会严重降低生产率和推迟日程,以此衡量的代价非常高昂。

可以创建封闭签入生成定义,以防止某些或所有基本代码出现此问题。

主题内容

  • 封闭签入生成如何影响您的团队

  • 定义封闭签入生成

  • 有关“进程”选项卡设置的准则

  • 封闭签入生成的运行方式

    • 自动运行封闭签入生成

    • 手动运行封闭签入生成和专用生成

封闭签入生成如何影响您的团队

在创建封闭签入生成时,开发人员提交的更改将放置在搁置集中,并会自动内置到您的生成系统中。 生成必须成功,签入过程才能完成。 有关更多信息,请参见签入由封闭签入生成控制的挂起的更改

如果某些用户必须绕过封闭签入,则可以针对您的一组用户将**“重写由生成执行的签入验证”权限设置为“允许”**。 有关更多信息,请参见 Team Foundation Server 权限

定义封闭签入生成

所需权限

若要执行此过程,您的**“编辑生成定义”权限必须设置为“允许”**。 有关更多信息,请参见 Team Foundation Server 权限

定义封闭签入生成

  1. 在团队资源管理器中,单击一个团队项目。

  2. 在**“生成”菜单上,单击“新建生成定义”**。

    此时将出现**“新建生成定义”窗口,并显示“常规”**选项卡。

  3. 在**“生成定义名称”**框中,键入名称。

  4. 在**“触发器”选项卡上,单击“仅在成功合并和生成提交的更改时封闭签入才接受签入”**。

  5. 单击**“工作区”**选项卡。

    此时将显示**“工作文件夹”**表。 此表会将此生成定义将控制的版本控制文件夹映射到生成代理上的本地文件夹。 有关更多信息,请参见删除已完成的生成

    提示

    请确保任何其他封闭签入生成定义的“工作区”选项卡中都未指定您为此定义指定的任何版本控制文件夹。 否则,当有人将文件签入这些文件夹时,系统将要求他们决定将哪个生成定义排入队列。

  6. 单击**“进程”**选项卡,然后按照适当方式设置生成过程参数,以确保签入符合团队的特定代码质量标准。

    对于大型团队生成的大型基本代码,应在验证代码质量与避免不必要地延误开发人员的工作这两个目标之间达到平衡。 有关更多信息,请参见本主题后面的有关“进程”选项卡设置的准则。

  7. 单击**“生成默认值”“保留策略”**选项卡,并在每个选项卡中应用适当的设置。

    有关更多信息,请参见创建基本生成定义

有关“进程”选项卡设置的准则

若要最大限度地减少处理生成所需的时间,您在指定**“进程”**选项卡上的生成过程参数的值时,应考虑遵循以下准则。

必需节点

  • 要生成的项要生成的配置:如果保留此参数为空,则将为每个解决方案和项目使用默认平台和配置。 若要优化性能,请遵循以下准则:

    • 如果一个平台-配置对的生成速度快于其他对的生成速度,请在此参数中指定它。

    • 尽可能少地指定平台-配置对。

基本节点

  • 自动测试:如果代码必须通过某些测试才有效,请设置测试运行以运行这些测试。 在设置测试运行时,请确保按照类别或优先级进行筛选,以便只运行最需要的测试。 有关更多信息,请参见使用默认模板定义生成

  • 清理工作区:将此值设置为**“无”(建议)或“输出”**。 但是,如果不清理工作区,可能更容易漏掉某些类型的缺陷。 有关更多信息,请参见使用默认模板定义生成

  • 执行代码分析:将此值设置为**“从不”**。

  • 源和符号服务器设置编制源索引:将此值设置为**“False”**。

高级节点

  • 代理设置

    • 名称筛选器标记筛选器:使用生成代理名称或标记将此生成定义与专门用于运行此生成的生成代理绑定。 运行生成代理的生成计算机应具有足够强大的硬件,以使处理此生成的速度足以满足团队的性能期望。

      例如,团队中的开发人员可能不介意用 15 分钟等待生成完成。 但开发人员可能无法接受不得不等待 8 小时才能确定其代码是否成功签入。

    • 最长执行时间:将此值合理地设置为尽可能小的数字,以实现持续集成生成。 例如,15 分钟对于团队可能合适,但 8 小时可能就太长了。

  • 将输出复制到放置文件夹:系统会将此值视为**“False”,即使您将此值设置为“True”**。

  • 失败时创建工作项:系统将此值视为**“False”,即使您将此值设置为“True”**。

  • 标记源:将此值设置为**“False”**。

有关如何设置生成过程参数值的更多信息,请参见使用默认模板定义生成

封闭签入生成的运行方式

每个封闭签入生成定义一次只能有一个运行的生成。 因此,活跃的大型团队很有可能会开发大的封闭签入生成队列。 下面的最佳做法可帮助团队避免妨碍进度:

  • 专门为封闭签入生成定义所使用的生成代理指定一台硬件强大(例如,拥有高速处理器和高速硬盘)的生成计算机。

  • 定义生成,使生成代理仅执行验证要签入的代码的质量所需的工作。 有关更多信息,请参见本主题前面的有关“进程”选项卡设置的准则。

封闭签入生成既可以自动运行,也可以通过手动来运行。

自动运行封闭签入生成

在发生下列任一事件时,封闭签入生成将自动运行:

  • 已通过选中生成定义的**“触发器”选项卡上的“封闭签入”**复选框来定义生成。

  • 有人尝试签入与生成定义的**“工作区”**选项卡中的任意映射文件夹相交的一个或多个更改。

手动运行封闭签入生成和专用生成

如果开发人员希望对其签入的更改更加有把握,则可以手动将搁置集的生成排入队列。 如果开发人员采用此方法,则他们可以在生成成功时指定下面两个选项之一,以告知系统应执行的下一步操作:

  • “系统签入更改(手动封闭签入生成)”:对于希望在签入之前验证其代码,但在不使用封闭签入触发器的团队中工作的开发人员来说,使用此选项会很方便。

  • “系统不签入更改(专用生成)”:当开发人员希望验证搁置集中的一些更改而不签入这些更改时,可以使用此选项。

有关更多信息,请参见将生成排入队列