我相当大的项目使用gated构建,具有高度自定义的流程模板(XAML)。由于超出此问题范围的原因,我们的进程只有一个SharedResourceScope,因此多个构建不会并行运行(我知道您应该使用代理范围执行此操作,但我们在中间切换代理,因此包装使用SharedResourceScope的一切。
现在,如果队列中有多个签到,则所有签入都处于“进行中”状态,除了一个以外的所有签入都在SharedResourceScope上等待。这意味着:
我已经尝试过使用DefaultProcessTemplate.XAML,我发现通常只有一个版本正在进行中(虽然偶尔会看到2个版本)。
问题:
什么时候构建开始,因此进入“进行中”模式?什么阻止所有构建立即启动,并阻止AgentScope / SharedResourceScope?
我可以在我的XAML中创作一些内容以阻止所有构建进行吗?
答案 0 :(得分:2)
当构建控制器具有启动新构建的能力时,构建开始。由于构建可以使用0到n个代理,因此控制器不会等待在构建开始之前获取代理。控制器根据控制器属性上的“最大并发构建数”设置(代码:MaxConcurrentBuilds
)确定其容量。
默认设置:“默认为代理人数”。
XAML无法控制此行为。
另外,TFS2010中有一个关于此问题的修补程序:KB2567437
答案 1 :(得分:0)
使用TFS Build Extensions,您可以通过以下流程管理代理商控制的许多活动:QueryBuildAgentStatus
,IsBuildRunning
,SetBuildAgentStatus
以列举一些可能的活动对你有用。到目前为止它们还没有完整记录,所以你必须尝试让它们运行。但是包中包含一个有用的帮助文件。
对于“进行中”模式,我注意到即使构建正在等待自由代理,这也是状态;检查这样的构建的日志,你会看到。这非常令人困惑,我希望MS将添加“排队(但未启动)”模式。