private IBuildDetail GetBuildDetail(BuildStatusChangeEvent statusChanged) { var buildSpec = _buildServer.CreateBuildDefinitionSpec(statusChanged.TeamProject); var detail = _buildServer.GetBuild(buildSpec, statusChanged.Id, null, QueryOptions.All); return(detail); }
static void Main(string[] args) { LogArguments(args); Uri projectCollectionUri = new Uri(args.ElementAt(0)); Guid projectCollectionId = Guid.Parse(args.ElementAt(1)); Uri buildUri = new Uri(args.ElementAt(2)); string logPath = Path.GetFullPath(args.ElementAt(3)); Console.WriteLine("Project collection URI: " + projectCollectionUri); Console.WriteLine("Project collection id: " + projectCollectionId); Console.WriteLine("Build URI: " + buildUri); Console.WriteLine("Log path: " + logPath); string tfsUriFromCollectionUri = projectCollectionUri.AbsoluteUri.Replace(projectCollectionUri.Segments.Last(), string.Empty); TfsConfigurationServer configurationServer = TfsConfigurationServerFactory.GetConfigurationServer(new Uri(tfsUriFromCollectionUri)); TfsTeamProjectCollection teamProjectCollection = configurationServer.GetTeamProjectCollection(projectCollectionId); IBuildServer buildServer = (IBuildServer)teamProjectCollection.GetService(typeof(IBuildServer)); IBuildDetail buildDetails = buildServer.GetBuild(buildUri); Console.WriteLine("Build details have been retrieved"); using (WebClient webClient = new WebClient()) { // see http://stackoverflow.com/questions/11414266/obtain-network-credentials-from-current-user-in-windows-authentication-applicati webClient.Credentials = CredentialCache.DefaultNetworkCredentials; string buildLogJson = webClient.DownloadString(buildDetails.LogLocation); BuildLogDetail buildInfo = JsonConvert.DeserializeObject <BuildLogDetail>(buildLogJson); Console.WriteLine("Build log has been retrieved"); using (StreamWriter logWriter = new StreamWriter(logPath)) { foreach (BuildStep buildStep in buildInfo.value) { LogBuildStep(buildStep, logWriter); } Console.WriteLine("Build log has been generated"); } } }
protected void Page_Load(object sender, EventArgs e) { Response.Write("<html>"); string teamFoundationServerUrl = Request.Params["TeamFoundationServerUrl"]; string buildUri = Request.Params["BuildUri"]; if (String.IsNullOrEmpty(teamFoundationServerUrl)) { teamFoundationServerUrl = "http://localhost:8080"; } if (String.IsNullOrEmpty(buildUri)) { Response.Write("<title>LogViewer Error</title><body>A valid BuildUri must be passed</body></html>"); Response.End(); return; } TeamFoundationServer tfs = new TeamFoundationServer(teamFoundationServerUrl); IBuildServer buildServer = (IBuildServer)tfs.GetService(typeof(IBuildServer)); IBuildDetail buildDetail = buildServer.GetBuild(new Uri(buildUri)); String logFile = Path.Combine(buildDetail.DropLocation, BuildConstants.BuildLogFileName); Response.Write("<title>Build Log: " + buildDetail.BuildNumber + "</title><body>\r\n<pre>"); StreamReader reader = File.OpenText(logFile); String line = reader.ReadLine(); while (line != null) { WriteLine(line); line = reader.ReadLine(); } reader.Close(); Response.Write("</pre></html>"); Response.End(); }
public G19BuildScreenAppletModel GetBuildInformation(IBuildServer buildServer, string buildDefinition, string teamProject) { G19BuildScreenAppletModel model = new G19BuildScreenAppletModel(); IBuildDefinition buildDetailSpec = buildServer.GetBuildDefinition(teamProject, buildDefinition); IBuildDetail build = buildServer.GetBuild(buildDetailSpec.LastBuildUri); switch (build.Status) { case BuildStatus.Succeeded: model.Status = build.Status.ToString(); break; case BuildStatus.Failed: model.Status = build.Status.ToString(); break; case BuildStatus.InProgress: model.Status = build.Status.ToString(); break; case BuildStatus.PartiallySucceeded: model.Status = build.Status.ToString(); break; case BuildStatus.Stopped: model.Status = build.Status.ToString(); break; default: break; } model.RequestedBy = build.RequestedBy; model.TeamProjectName = build.TeamProject; model.TimeRequested = build.StartTime; model.BuildDefinitionName = build.BuildDefinition.Name; model.BuildUri = build.Uri; return model; }
private IBuildDetail GetBuildDetail(BuildStatusChangeEvent statusChanged) { return(_buildServer.GetBuild(new Uri(statusChanged.BuildUri))); }