我的相当大的项目使用门控构建,有一个高度定制的过程模板(XAML)。由于这个问题范围以外的原因,我们的流程只有一个SharedResourceScope,所以多个构建不能并行运行(我知道您应该在代理作用域中这样做,但是我们在中间切换代理,所以用SharedResourceScope包装了所有的东西)。
现在,如果队列中有几个签入,那么所有签入都会进入“在进度”状态,只有一个人在等待SharedResourceScope。这意味着:
我已经使用DefaultProcessTemplate.XAML进行了实验,我发现通常只有一个构建在进行中(虽然偶尔会看到2个构建)。
问题:
发布于 2012-05-01 11:05:48
当生成控制器具有启动新生成的能力时,生成将启动。因为构建可以使用0到n个代理,所以控制器在构建开始之前不会等待获得代理。控制器根据控制器属性上的“最大并发生成数”设置(代码:MaxConcurrentBuilds)确定其容量。默认设置:“默认为代理数量”。
在XAML中无法控制这种行为。
另外,在TFS2010中有一个关于此的bug,hotfix:KB2567437
发布于 2012-04-24 12:10:27
使用TFS构建扩展,您可以获得许多可以通过流程管理代理控制的活动:QueryBuildAgentStatus、IsBuildRunning、SetBuildAgentStatus,举几个对您有用的活动。从现在起,它们是完全没有文档记录的,所以您必须进行实验才能让它们运行。但是包中包含了一个有用的帮助文件。
至于“正在进行中”模式,我注意到即使构建正在等待一个自由代理,这也是一种状态;检查这样一个构建的日志,您就会看到。这是相当令人困惑的,我希望MS将添加一个“排队(但不是开始)”模式。
https://stackoverflow.com/questions/10250518
复制相似问题