Estoy tratando de obtener una compilación particular de TFS pero es frustrantemente difícil. Tengo una aplicación MVC que provoca una acumulación de esta manera:Cómo obtener una compilación específica con la API de TFS
IBuildServer buildServer = (IBuildServer)Server.GetService(typeof(IBuildServer));
IBuildDefinition def = buildServer.GetBuildDefinition(TeamProject, BuildDefinition);
var queuedBuild = buildServer.QueueBuild(def);
QueueBuild devuelve IQueuedBuild y yo tenía la esperanza de hacer algo como esto:
return queuedBuild.Build.BuildNumber
Así que me gustaría tener algún valor único que pude utilizar para consultar el servidor de compilación con para recuperar la compilación correcta. Desafortunadamente Build puede o no ser nulo cuando la ejecución sale de este método, por lo que es un no ir.
Después de la construcción está en la cola entonces consultar este método
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;
}
Esto funciona hasta cierto punto, pero si hay múltiples construye en la cola no tengo forma de saber en este método de votación si la acumulación soy trabajar con es el que hice cola en el primer método. ¿Alguien tiene alguna idea de lo que podría hacer para recuperar la construcción específica que está En cola en el primer método?
Gracias!
Si no conozco el Uri cuando ingrese al método de votación, ¿cómo sabré cuál es la que estoy buscando? – dparsons
En lugar de devolver el número de compilación en su primer método, devuelva 'Build.Uri' – DaveShaw
Eso no funcionará. La propiedad Build de queuedBuild es nula si hay otra compilación antes de la compilación que estoy iniciando. – dparsons