【问题标题】:Creating a TFS Custom "Builds" Check-In Policy创建 TFS 自定义“构建”签入策略
【发布时间】:2017-01-08 11:19:13
【问题描述】:

内置的 TFS 构建签入策略不可配置 - 它只是查看上次构建是否失败,如果是,则在 Visual Studio 中显示策略警告。不幸的是,它认为“最后一个”构建是最后一个及时完成的​​构建,而不是最后一个完成最新变更集的构建。因此,即使事情被破坏,政策也可能是明确的。考虑这种情况:

Joe 在 Changeset 1234 中提交代码并开始构建“Awesome Build” John 在 Changeset 1235 中提交代码,它也开始构建“Awesome Build”,但 change set 1235 包含一个中断

由于我有多个构建代理,因此两个构建同时运行。

现在假设 John 的构建首先完成并且由于中断而失败 - 构建策略现在处于 Broken 状态 - 警告您无法签入(如预期的那样)。

Joe 的构建第二次完成并成功 - 此时构建策略将恢复为清除状态,并且不会出现任何警告。 (没想到,最后一个变更集仍然损坏,需要修复)。

我知道 TFS 允许我通过编译实现“Microsoft.TeamFoundation.VersionControl.Client.PolicyBase”的类来创建自己的自定义签入策略。不过这里有一些问题:

  1. 我能找到的唯一官方文档在此处 (https://msdn.microsoft.com/en-us/library/bb668980.aspx),正如页面所示,此内容已弃用且不再维护。这是否意味着有一种新的/更好的/更简单的方法来实施自定义签到政策?

  2. 有谁知道我在哪里可以找到与编写这些策略有关的文档,特别是用于解决我上面概述的问题的“构建”策略。我希望根据最新的变更集而不是最近的构建时间来执行我的签入政策。

您能提供的任何帮助都会很棒。此策略修复将解决我非常庞大的开发团队中的许多问题。

【问题讨论】:

  • 为什么不直接使用门控签入 (TFVC) 或拉取请求+分支策略 (Git)?签入策略很难维护和分发,很容易通过不使用 Visual Studio 或完全删除策略程序集来规避。
  • TFS 门控签入可以工作,但它会给我们已经负担过重的构建代理带来负担,并且会增加比我们准备引入的更多的开销。我更喜欢 Git,但我们还没有准备好改变 VC 系统。我也不喜欢入住政策,但这是我被要求解决的任务。感谢您的意见。

标签: c# .net tfs azure-devops tfs-2015


【解决方案1】:

您提供的文章是简单更好的方法,适用于更高版本,注册密钥路径根据VS的版本(8.0、12.0等...),对于64位机器,路径如HKEY_LOCAL_MACHINE\ SOFTWARE\Wow6432Node\Microsoft\VisualStudio{VisualStudioVersion}\TeamFoundation\SourceControl\Checkin 策略。

在您的自定义签入策略中,您可以通过 TFS API(评估方法)检查​​最新的构建结果。例如:

TeamFoundationServer tfs = new TeamFoundationServer("http://tfsserver:8080/tfs"); 
IBuildServer buildServer = (IBuildServer) tfs.GetService(typeof(IBuildServer)); 
IBuildDetailSpec buildDetailSpec = buildServer.CreateBuildDetailSpec("Team Project", "Build Definition Name"); 
buildDetailSpec.MaxBuildsPerDefinition = 1; 
buildDetailSpec.QueryOrder = BuildQueryOrder.FinishTimeDescending; 
IBuildQueryResult results = buildServer.QueryBuilds(buildDetailSpec);

如果您只需要确保更改没有问题(构建可以成功),正如 Daniel 所说,使用门控签入 (TFVC) 或使用分支策略 (git) 拉取请求。

【讨论】:

    猜你喜欢
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 2021-05-18
    相关资源
    最近更新 更多