¿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.

    enter image description here

    enter image description here

    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)

    enter image description here

    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