我想从TFS获取特定版本,但这非常困难。我有一个MVC应用程序触发构建这样的:如何使用TFS API获取特定版本
IBuildServer buildServer = (IBuildServer)Server.GetService(typeof(IBuildServer));
IBuildDefinition def = buildServer.GetBuildDefinition(TeamProject, BuildDefinition);
var queuedBuild = buildServer.QueueBuild(def);
QueueBuild返回IQueuedBuild和我希望做这样的事情:
return queuedBuild.Build.BuildNumber
所以我将有一些独特的价值,我可以用于查询构建服务器以获取正确的构建。不幸的是,当执行退出这个方法时,Build可能会或者可能不会为null,所以这是一个不行的方法。
后生成进行排队,然后我查询这种方法
public string GetBuildStatus(string TeamProject, string BuildDefinition, string BuildNumber)
{
string status = string.Empty;
IBuildDetailSpec buildDetailSpec = buildServer.CreateBuildDetailSpec(TeamProject, BuildDefinition);
buildDetailSpec.MaxBuildsPerDefinition = 1;
buildDetailSpec.Status = BuildStatus.InProgress | BuildStatus.None;
buildDetailSpec.QueryOrder = BuildQueryOrder.FinishTimeDescending;
IBuildQueryResult queryResult = buildServer.QueryBuilds(buildDetailSpec);
if (queryResult.Builds.Length > 0)
{
status = queryResult.Builds[0].Status.ToString();
}
return status;
}
此作品在一定程度上,但如果有多个建立在队列中我没有在此轮询方法知道如果构建我的方式与我一起工作的是第一种方法排队的人。有没有人知道我能做些什么来取回在第一种方法中排队的特定构建?
谢谢!
如果我不知道Uri当我进入轮询方法时,我会如何确定哪个构建是我正在寻找的? – dparsons
而不是返回您的第一个方法中的内部版本号返回'Build.Uri' – DaveShaw
这将无法正常工作。如果在开始构建之前还有另一个构建,则queuedBuild的Build属性为null。 – dparsons