private BuildStatus CreateBuildStatus(IBuildDetail buildDetail, IEnumerable <MyTfsBuildDefinition> allBuildDefinitions, bool applyBuildQuality) { BuildStatusEnum buildStatus = GetBuildStatusEnum(buildDetail.Status); var buildQuality = GetBuildStatusEnum(buildDetail.Quality); if (applyBuildQuality && buildStatus == BuildStatusEnum.Working) { buildStatus = buildQuality; } var result = new BuildStatus { BuildStatusEnum = buildStatus, StartedTime = buildDetail.StartTime == DateTime.MinValue ? (DateTime?)null : buildDetail.StartTime, FinishedTime = buildDetail.FinishTime == DateTime.MinValue ? (DateTime?)null : buildDetail.FinishTime, }; var matchedBuildDefinition = allBuildDefinitions.FirstOrDefault(i => i.Uri == buildDetail.BuildDefinitionUri); if (matchedBuildDefinition != null) { result.Name = matchedBuildDefinition.Name; result.BuildDefinitionId = matchedBuildDefinition.Id; } else { _log.Error("The server appeared to return a build definition that we are not watching: " + buildDetail.BuildDefinitionUri); } result.BuildId = buildDetail.Uri.Segments.LastOrDefault(); SetCheckinInfo(buildDetail, applyBuildQuality, result, buildQuality, matchedBuildDefinition); result.Url = _tfsProject.ConvertTfsUriToUrl(buildDetail.Uri); return(result); }
private BuildStatus CreateBuildStatus(IBuildDetail buildDetail, bool applyBuildQuality) { BuildStatusEnum status = BuildStatusEnum.Unknown; status = GetBuildStatusEnum(buildDetail.Status); if (applyBuildQuality && status == BuildStatusEnum.Working) { status = GetBuildStatusEnum(buildDetail.Quality); } var result = new BuildStatus { BuildDefinitionId = buildDetail.BuildDefinitionUri.Segments[buildDetail.BuildDefinitionUri.Segments.Length - 1].ToString(), BuildStatusEnum = status, RequestedBy = buildDetail.RequestedBy != null ? buildDetail.RequestedBy : buildDetail.RequestedFor != null ? buildDetail.RequestedFor : buildDetail.LastChangedBy, StartedTime = buildDetail.StartTime == DateTime.MinValue ? (DateTime?)null : buildDetail.StartTime, FinishedTime = buildDetail.FinishTime == DateTime.MinValue ? (DateTime?)null : buildDetail.FinishTime, }; if (buildDetail.BuildDefinition != null) { this._UriToName[buildDetail.BuildDefinitionUri.ToString()] = buildDetail.BuildDefinition.Name; } result.Name = this._UriToName[buildDetail.BuildDefinitionUri.ToString()]; result.BuildId = buildDetail.Uri.Segments[buildDetail.Uri.Segments.Length - 1].ToString(); var changesets = buildDetail.Information.GetNodesByType("AssociatedChangeset"); if (changesets.Count() > 0) { HashSet <String> users = new HashSet <String>(); foreach (var changeset in changesets) { users.Add(changeset.Fields["CheckedInBy"]); } if (users.Count() > 1) { result.RequestedBy = "(Multiple Users)"; } else { result.RequestedBy = users.First(); } if (changesets.Count() > 1) { result.Comment = "(Multiple Changesets)"; } else { result.Comment = changesets.First().Fields["Comment"]; } } else { result.Comment = buildDetail.Reason.ToString(); } if (applyBuildQuality && GetBuildStatusEnum(buildDetail.Quality) == BuildStatusEnum.Broken) { result.Comment = "Build deployment or test failure. Please see test server or test results for details.\n" + result.Comment; } result.Url = _tfsProject.ConvertTfsUriToUrl(buildDetail.Uri); return(result); }
public string ConvertTfsUriToUrl(Uri uri) { return(_myTfsProject.ConvertTfsUriToUrl(uri)); }