TFS2010 构建队列有时有多个 InProgress 构建,有时没有 - 逻辑是什么?

标签 tfs tfsbuild

我的相当大的项目使用门控构建,并带有高度定制的流程模板(XAML)。由于超出此问题范围的原因,我们的进程有一个 SharedResourceScope,因此多个构建不会并行运行(我知道您应该使用代理范围来执行此操作,但我们在中间切换代理,因此将一切都与 SharedResourceScope 相关)。

现在,如果队列中存在多个 checkin ,则所有 checkin 都会进入“进行中”状态,并且除一个之外的所有 checkin 都会等待 SharedResourceScope。这意味着:

  • 人们无法知道哪个构建正在实际运行
  • 即使我将新的排队 checkin 设置为高优先级,它也无法超越所有正在处理并等待 SharedResourceScope 的 checkin ,因此整个优先级设置没有什么意义。

我尝试过使用 DefaultProcessTemplate.XAML,并且发现通常只有一个构建正在进行(尽管偶尔我会看到 2 个构建)。

问题:

  1. 构建何时开始并因此进入“进行中”模式?是什么阻止所有构建立即启动并在 AgentScope/SharedResourceScope 上阻塞?

  2. 我可以在 XAML 中编写一些内容来阻止所有构建继续进行吗?

最佳答案

当构建 Controller 有能力启动新构建时,构建就会开始。由于构建可以使用 0 到 n 个代理,因此 Controller 不会在构建开始之前等待获取代理。 Controller 根据 Controller 属性上的“最大并发构建数”设置确定其容量(在代码中:MaxConcurrentBuilds)。 默认设置:“默认代理数量”。

XAML 中无法控制此行为。

此外,TFS2010 中存在与此相关的错误,修补程序:KB2567437

关于TFS2010 构建队列有时有多个 InProgress 构建,有时没有 - 逻辑是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10250518/

相关文章:

tfs - Team Foundation 服务构建错误

java - sonarQube 执行失败,错误代码为 "Error during SonarQube Scanner execution"

TFS Code Reviewer - 无法下载(新文件)

TFS 2015 为所有分支机构构建一个

tfs - 如何自动添加(或让tfs2015发现)build agent能力?

tfs - 如何获取 TFS2015 Build (Build.vnext) 和 NuGet 包还原以使用自定义包源

c# - 是否有相当于 TFS 2015 的 "Build 2.0"REST API 的 .NET API?

visual-studio - tfIgnore 在 Visual Studio 2013 中对我不起作用

version-control - 从 TFS : VersionSpec. 最新版本规范合并无法按预期工作

c++ - 您如何在团队环境中管理大型 C++ 依赖项?