Sandy
Sandy

Reputation: 21

How to fetch Build Warning from TFS MS Build or TFS API

I am trying to fetch Build Warning from MS Build,(in Build which contain or having number of solutions)

Is it possible to fetch using TFS API, or any TFS DB using QUERY ?

Upvotes: 2

Views: 348

Answers (1)

Tingting0929
Tingting0929

Reputation: 4202

You could use this TFS REST API to get logs of a TFS builds. To get those logs out, you need to fetch those warnings by yourself. There's no API to only get warnings.

Http method: GET

http:/servername"8080/tfs/DefaultCollection/teamproject/_apis/build/builds/391/logs?api-version=2.0

You could also install a TFS ExtendedClient Nuget package to use TFS object model API.

Here is the code snippet:

Like the comment said above, the VNext build definition information couldn't be reached using the old version API. Install this TFS ExtendedClient Nuget package for your project, using the method below to get all build definitions.

using Microsoft.VisualStudio.Services.WebApi;
using Microsoft.VisualStudio.Services.Common;
using Microsoft.TeamFoundation.Build.WebApi;
using Microsoft.TeamFoundation.Core.WebApi;
using Microsoft.VisualStudio.Services.Operations;

private static void GetBuildWarnings()
{
    var u = new Uri("http://v-tinmo-12r2:8080/tfs/MyCollection/");
    VssCredentials c = new VssCredentials(new Microsoft.VisualStudio.Services.Common.WindowsCredential(new NetworkCredential("username", "password", "domain")));
    var connection = new VssConnection(u, c);
    BuildHttpClient buildServer = connection.GetClient<BuildHttpClient>();

    List<BuildLog> logs =  buildServer.GetBuildLogsAsync("teamprojectname",buildId).Result;
    foreach (BuildLog log in logs)
    {
        var list = buildServer.GetBuildLogLinesAsync("A92FB795-A956-45B5-A017-7A7DFB96A040",buildId,log.Id).Result;  //A92FB795-A956-45B5-A017-7A7DFB96A040 is the team project Guid
        foreach (var line in list)
        {
            if (l.Contains("[Warning]"))
            {
                Console.WriteLine(line);
            }
        }
    }
    Console.ReadLine();
}

Upvotes: 1

Related Questions