¿Cómo obtener el número de empleos en la página de resultados de la construcción?
Un seguimiento de mis preguntas anteriores Cómo utilizar ADO Rest API para obtener la lista de la prueba de ejecución en una construcción específica.
Uso Runs - Query api para conseguir carreras de mi construcción:
GET https://dev.azure.com/{organization}/{project}/_apis/test/runs?minLastUpdatedDate={minLastUpdatedDate}&maxLastUpdatedDate={maxLastUpdatedDate}&buildIds={buildIds}&api-version=6.0
Pero veo que count
valor en el cuerpo JSON no coincide con el # de trabajo que veo en la página de resultado de la construcción, es decir. https://{my org}.visualstudio.com/{my project}/_build/results?buildId={my build id}&view=results
Desde la página de resultados de construcción, sólo tengo 5 puestos de trabajo. ¿Puedes ayudarme por favor en cómo conseguir el # de trabajo en la página de resultado de construcción?
Además, cada trabajo tiene un registro. Cómo conseguir el log id de cada trabajo para que pueda usar este api https://learn.microsoft.com/en-us/rest/api/azure/devops/build/builds/get%20build%20log?view=azure-devops-rest-6.1
Pregunta hecha hace 3 años, 4 meses, 27 días - Por pixelpilot
3 Respuestas:
-
¿Puedes ayudarme por favor en cómo conseguir el # de trabajo en la página de resultado de construcción?
El
#number
en la página de resultados de la construcción es Número de construcción de la Pipeline de Construcción.Para obtener este número, puede utilizar la API de reposo: Construcciones - Obtener
GET https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}?api-version=6.1-preview.6
Entonces podrías Revisar el
buildNumber
campo en la Respuesta.Cómo conseguir el log id de cada trabajo para que pueda usar este api https://learn.microsoft.com/en-us/rest/api/azure/devops/build/builds/get%20build%20log?view=azure-devops-rest-6.1
Para obtener el LogId para cada trabajo, necesita utilizar esta API de reposo: Timeline - Get
GET https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}/timeline?api-version=4.1
Nota: Si no entras en un timelineid específico, obtendrás la línea de tiempo de toda la construcción
Entonces usted puede encontrar el logid correspondiente basado en el nombre de trabajo (por ejemplo, Agente Job 1) o nombre identificador (por ejemplo Job_2,Job_1)
Respondida el Dec 20, 2020 a las 16:55 - por csharpsorcerer
Votos positivos: 0 | Votos negativos: 0 -
Para obtener el número de empleos en la página de resultados de la construcción, puedes hacer lo siguiente:
- En lugar de consultar directamente los resultados de las pruebas, consulta primero los detalles de la construcción específica utilizando el endpoint de Builds en la Rest API de Azure DevOps. Puedes utilizar la siguiente URL para obtener los detalles de una construcción específica:
GET https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}?api-version=6.0
- En la respuesta de esta consulta, habrá un campo llamado `timeline`, que contiene información detallada de los trabajos que se ejecutaron en la construcción. Puedes contar el número de trabajos en esta sección para obtener el número total de trabajos en la construcción.
- Para obtener el log id de cada trabajo, puedes consultar el registro de una construcción específica utilizando el endpoint de Logs en la Rest API de Azure DevOps. Puedes usar la siguiente URL para obtener el registro de un trabajo específico en una construcción:
GET https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}/logs?api-version=6.0
En la respuesta de esta consulta, encontrarás una lista de registros para cada trabajo en la construcción. Puedes utilizar la información de estos registros para obtener los log ids de cada trabajo.
Al seguir estos pasos, podrás obtener el número de empleos en la página de resultados de la construcción y también los log ids de cada trabajo para usar en las consultas posteriores. Espero que esta información te sea útil. ¡Déjame saber si necesitas más ayuda!
Respondida el Dec 21, 2020 a las 16:53 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Cómo obtener el número de empleos en la página de resultados de la construcción
La API Runs - Query solo devuelve ejecuciones de prueba, no trabajos. Los trabajos son un concepto diferente en Azure DevOps. Para obtener el número de trabajos en una construcción, debes utilizar la API Builds - Get.
GET https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}?api-version=6.0
La respuesta JSON incluirá un campo
jobs
que contiene una matriz de todos los trabajos de la construcción. El número de trabajos será la longitud de esta matriz.Cómo obtener el ID del registro de cada trabajo
Cada trabajo tiene un registro asociado. Para obtener el ID del registro de un trabajo, puedes utilizar la API Logs - Get.
GET https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}/logs/{jobId}?api-version=6.0
La respuesta JSON incluirá un campo
id
que contiene el ID del registro.Ejemplo de código
El siguiente código de C
muestra cómo obtener el número de trabajos y los ID de registro para una construcción determinada:
csharp using Microsoft.VisualStudio.Services.Client; using Microsoft.VisualStudio.Services.Common; using Microsoft.VisualStudio.Services.WebApi; using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Net.Http.Headers; using System.Threading.Tasks; namespace GetBuildJobsAndLogs { class Program { static async Task Main(string[] args) { // Rellena las siguientes variables string organization = "tu-organizacion"; string project = "tu-proyecto"; int buildId = 123; // El ID de la construcción // Crea un objeto de cliente VssConnection connection = new VssConnection(new Uri("https://dev.azure.com/" + organization), new VssBasicCredential(string.Empty, "tu-pat")); HttpClient client = connection.GetHttpClient(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); // Obtiene la información de la construcción HttpResponseMessage response = await client.GetAsync($"_apis/build/builds/{buildId}"); response.EnsureSuccessStatusCode(); string json = await response.Content.ReadAsStringAsync(); Build build = JsonConvert.DeserializeObject
(json); // Obtiene el número de trabajos int numJobs = build.Jobs.Count; // Obtiene los ID de los registros List logIds = new List (); foreach (Job job in build.Jobs) { response = await client.GetAsync($"_apis/build/builds/{buildId}/logs/{job.Id}"); response.EnsureSuccessStatusCode(); json = await response.Content.ReadAsStringAsync(); BuildLog log = JsonConvert.DeserializeObject (json); logIds.Add(log.Id); } // Imprime el número de trabajos y los ID de los registros Console.WriteLine($"Número de trabajos: {numJobs}"); Console.WriteLine("ID de los registros:"); foreach (int logId in logIds) { Console.WriteLine(logId); } } } } Nota: Necesitarás instalar el paquete NuGet
Microsoft.VisualStudio.Services.Client
para utilizar este código.Respondida el Dec 21, 2020 a las 17:02 - por Gemini
Votos positivos: 0 | Votos negativos: 0