Ich versuche, einen bestimmten Build von TFS zu bekommen, aber es ist frustrierend schwierig. Ich habe eine MVC-Anwendung, die einen Build wie dies löst:Wie bekomme ich einen spezifischen Build mit der TFS-API
IBuildServer buildServer = (IBuildServer)Server.GetService(typeof(IBuildServer));
IBuildDefinition def = buildServer.GetBuildDefinition(TeamProject, BuildDefinition);
var queuedBuild = buildServer.QueueBuild(def);
QueueBuild kehrt IQueuedBuild und ich hatte gehofft, so etwas zu tun:
return queuedBuild.Build.BuildNumber
So dass ich einige eindeutigen Wert haben würde, dass ich Verwenden Sie, um den Build-Server abzufragen, um den korrekten Build zurück zu bekommen. Leider kann Build nicht null sein, wenn die Ausführung diese Methode beendet, so dass es ein Nein ist.
Nachdem der Build in die Warteschlange gestellt ich dann diese Methode abfragen
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;
}
Dies zu einem gewissen Grad funktioniert, aber wenn es mehrere baut sich in der Warteschlange befinden, habe ich keine Möglichkeit in dieser Abfrageverfahren zu wissen, ob die Build ich bin Die Arbeit mit ist die, die ich in der ersten Methode in die Warteschlange gestellt habe. Hat jemand eine Idee, was ich tun könnte, um den spezifischen Build zurückzubekommen, der in der ersten Methode in die Warteschlange gestellt wurde?
Danke!
Wenn ich den Uri nicht kenne, wenn ich an der Umfrage-Methode teilnehme, wie würde ich herausfinden, welcher Build der ist, nach dem ich suche? – dparsons
Anstatt die Build-Nummer in Ihrer ersten Methode zurückzugeben, geben Sie 'Build.Uri' zurück – DaveShaw
Das wird nicht funktionieren. Die Build-Eigenschaft von queuedBuild ist null, wenn vor dem Build, den ich gestarte, ein weiterer Build erstellt wird. – dparsons