我想從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