public CruiseControlNetBuildStatus(XElement projectElem) { Name = BuildDefinitionId = projectElem.AttributeValue("name"); BuildStatusInfo buildStatusInfo; if (!_buildStatusInfo.TryGetValue(BuildDefinitionId, out buildStatusInfo)) { buildStatusInfo = new BuildStatusInfo(); _buildStatusInfo.Add(BuildDefinitionId, buildStatusInfo); } var lastBuildTimeStr = projectElem.AttributeValueOrDefault("lastBuildTime"); DateTime dt; DateTime? lastBuildTime = null; if (DateTime.TryParse(lastBuildTimeStr, out dt)) { lastBuildTime = dt; } BuildStatusEnum = ToBuildStatusEnum(projectElem.AttributeValueOrDefault("activity"), projectElem.AttributeValueOrDefault("lastBuildStatus")); StartedTime = GetStartedTime(buildStatusInfo, BuildStatusEnum, lastBuildTime); FinishedTime = GetFinishedTime(buildStatusInfo, BuildStatusEnum, lastBuildTime); Comment = null; RequestedBy = GetRequestedBy(projectElem); var webUrl = projectElem.AttributeValueOrDefault("webUrl"); string lastBuildTimeAsId = ParseCruiseControlDateToId(lastBuildTimeStr); Url = string.Format("{0}/server/local/project/{1}/build/log{2}.xml/ViewBuildReport.aspx", webUrl, Name, lastBuildTimeAsId); BuildId = GetBuildIdOrDefault(projectElem, lastBuildTimeAsId); buildStatusInfo.LastBuildStatusEnum = BuildStatusEnum; }
public CruiseControlNetBuildStatus(XElement projectElem) { Name = BuildDefinitionId = projectElem.AttributeValue("name"); BuildStatusInfo buildStatusInfo; if (!_buildStatusInfo.TryGetValue(BuildDefinitionId, out buildStatusInfo)) { buildStatusInfo = new BuildStatusInfo(); _buildStatusInfo.Add(BuildDefinitionId, buildStatusInfo); } var lastBuildTimeStr = projectElem.AttributeValueOrDefault("lastBuildTime"); DateTime dt; DateTime?lastBuildTime = null; if (DateTime.TryParse(lastBuildTimeStr, out dt)) { lastBuildTime = dt; } BuildStatusEnum = ToBuildStatusEnum(projectElem.AttributeValueOrDefault("activity"), projectElem.AttributeValueOrDefault("lastBuildStatus")); StartedTime = GetStartedTime(buildStatusInfo, BuildStatusEnum, lastBuildTime); FinishedTime = GetFinishedTime(buildStatusInfo, BuildStatusEnum, lastBuildTime); Comment = null; RequestedBy = GetRequestedBy(projectElem); var webUrl = projectElem.AttributeValueOrDefault("webUrl"); string lastBuildTimeAsId = ParseCruiseControlDateToId(lastBuildTimeStr); Url = string.Format("{0}/server/local/project/{1}/build/log{2}.xml/ViewBuildReport.aspx", webUrl, Name, lastBuildTimeAsId); BuildId = GetBuildIdOrDefault(projectElem, lastBuildTimeAsId); buildStatusInfo.LastBuildStatusEnum = BuildStatusEnum; }
public CruiseControlNetBuildStatus(XElement projectElem, XElement modifications) { Name = BuildDefinitionId = projectElem.AttributeValue("name"); BuildStatusInfo buildStatusInfo; if (!_buildStatusInfo.TryGetValue(BuildDefinitionId, out buildStatusInfo)) { buildStatusInfo = new BuildStatusInfo(); _buildStatusInfo.Add(BuildDefinitionId, buildStatusInfo); } var lastBuildTimeStr = projectElem.AttributeValueOrDefault("lastBuildTime"); DateTime dt; DateTime?lastBuildTime = null; if (DateTime.TryParse(lastBuildTimeStr, out dt)) { lastBuildTime = dt; } BuildStatusEnum = ToBuildStatusEnum(projectElem.AttributeValueOrDefault("activity"), projectElem.AttributeValueOrDefault("lastBuildStatus")); StartedTime = GetStartedTime(buildStatusInfo, BuildStatusEnum, lastBuildTime); FinishedTime = GetFinishedTime(buildStatusInfo, BuildStatusEnum, lastBuildTime); Comment = GetComment(projectElem, modifications); RequestedBy = GetRequestedBy(projectElem, modifications); var webUrl = projectElem.AttributeValueOrDefault("webUrl"); string lastBuildTimeAsId = ParseCruiseControlDateToId(lastBuildTimeStr); string lastBuildNumber = projectElem.AttributeValueOrDefault("lastBuildLabel"); Url = string.Format("{0}/server/local/project/{1}/build/log{2}Lbuild.{3}.xml/ViewBuildReport.aspx", webUrl, Name, lastBuildTimeAsId, lastBuildNumber); BuildId = GetBuildIdOrDefault(projectElem, lastBuildTimeAsId); if (BuildStatusEnum == SirenOfShame.Lib.Watcher.BuildStatusEnum.InProgress) { Comment = "Building..."; RequestedBy = null; } else if (BuildStatusEnum == SirenOfShame.Lib.Watcher.BuildStatusEnum.Broken) { Url = string.Format("{0}/server/local/project/{1}/build/log{2}.xml/ViewBuildReport.aspx", webUrl, Name, lastBuildTimeAsId); BuildId = lastBuildTimeAsId; } buildStatusInfo.LastBuildStatusEnum = BuildStatusEnum; }
private DateTime?GetFinishedTime(BuildStatusInfo buildStatusInfo, BuildStatusEnum buildStatusEnum, DateTime?lastBuildTime) { if (buildStatusInfo.LastBuildStatusEnum == null) { return(lastBuildTime); } var lastBuildStatusEnum = buildStatusInfo.LastBuildStatusEnum.Value; // the build stopped since our last poll time so update the finished time if (buildStatusEnum != BuildStatusEnum.InProgress && lastBuildStatusEnum == BuildStatusEnum.InProgress) { buildStatusInfo.FinishedTime = DateTime.Now; } if (buildStatusInfo.FinishedTime == null && buildStatusEnum != BuildStatusEnum.InProgress) { return(lastBuildTime); } return(buildStatusInfo.FinishedTime); }
private static DateTime?GetStartedTime(BuildStatusInfo buildStatusInfo, BuildStatusEnum buildStatusEnum, DateTime?lastBuildTime) { bool thisIsTheFirstBuild = buildStatusInfo.LastBuildStatusEnum == null; if (thisIsTheFirstBuild) { return(lastBuildTime); } var lastBuildStatusEnum = buildStatusInfo.LastBuildStatusEnum.Value; // the build started since our last poll time so update the start time if (buildStatusEnum == BuildStatusEnum.InProgress && lastBuildStatusEnum != BuildStatusEnum.InProgress) { buildStatusInfo.StartedTime = DateTime.Now; } if (buildStatusInfo.StartedTime == null) { return(lastBuildTime); } return(buildStatusInfo.StartedTime); }
private static DateTime? GetStartedTime(BuildStatusInfo buildStatusInfo, BuildStatusEnum buildStatusEnum, DateTime? lastBuildTime) { bool thisIsTheFirstBuild = buildStatusInfo.LastBuildStatusEnum == null; if (thisIsTheFirstBuild) { return lastBuildTime; } var lastBuildStatusEnum = buildStatusInfo.LastBuildStatusEnum.Value; // the build started since our last poll time so update the start time if (buildStatusEnum == BuildStatusEnum.InProgress && lastBuildStatusEnum != BuildStatusEnum.InProgress) { buildStatusInfo.StartedTime = DateTime.Now; } if (buildStatusInfo.StartedTime == null) return lastBuildTime; return buildStatusInfo.StartedTime; }
private DateTime? GetFinishedTime(BuildStatusInfo buildStatusInfo, BuildStatusEnum buildStatusEnum, DateTime? lastBuildTime) { if (buildStatusInfo.LastBuildStatusEnum == null) { return lastBuildTime; } var lastBuildStatusEnum = buildStatusInfo.LastBuildStatusEnum.Value; // the build stopped since our last poll time so update the finished time if (buildStatusEnum != BuildStatusEnum.InProgress && lastBuildStatusEnum == BuildStatusEnum.InProgress) { buildStatusInfo.FinishedTime = DateTime.Now; } if (buildStatusInfo.FinishedTime == null && buildStatusEnum != BuildStatusEnum.InProgress) return lastBuildTime; return buildStatusInfo.FinishedTime; }
public BuildBotBuildStatus(string jsonQuery, string rootUrl) { JavaScriptSerializer jss = new JavaScriptSerializer(); jss.RegisterConverters(new JavaScriptConverter[] { new DynamicJsonConverter() }); dynamic buildStatus = jss.Deserialize<object>(jsonQuery) as dynamic; dynamic mostRecentBuild = buildStatus.MinusOne; Name = BuildDefinitionId = mostRecentBuild.builderName; BuildStatusInfo buildStatusInfo; if (!_buildStatusInfo.TryGetValue(BuildDefinitionId, out buildStatusInfo)) { buildStatusInfo = new BuildStatusInfo(); _buildStatusInfo.Add(BuildDefinitionId, buildStatusInfo); } //see if mostRecentBuild is in progress, complete or broken bool buildInProgress = true; if (mostRecentBuild.times[1] != null) { FinishedTime = FromUnixTime((double)mostRecentBuild.times[1]); buildInProgress = false; } else { FinishedTime = null; } StartedTime = FromUnixTime((double)mostRecentBuild.times[0]); if (buildInProgress) { BuildStatusEnum = BuildStatusEnum.InProgress; } else { try { List<object> text = mostRecentBuild.text; if (text.Contains("successful")) { BuildStatusEnum = BuildStatusEnum.Working; } else if (text.Contains("failed")) { BuildStatusEnum = BuildStatusEnum.Broken; } else { BuildStatusEnum = BuildStatusEnum.Unknown; } } catch( Exception ) { BuildStatusEnum = BuildStatusEnum.Unknown; } } try { List<object> changes = mostRecentBuild.sourceStamp.changes; if( changes.Count > 0 && changes[0].GetType() == typeof(Dictionary<String,object>)) { var change = changes[0] as Dictionary<string, object>; if (change != null) Comment = change["comments"].ToString(); } } catch (Exception ex) { _log.Error("Error retrieving build bot comments", ex); } if (Comment == null) { Comment = mostRecentBuild.reason; } var requestedby = GetProperty("blamelist", mostRecentBuild); if (requestedby != null && requestedby.Count > 1) { ArrayList fools = requestedby[1]; var sb = new StringBuilder(); for( int i = 0; i < fools.Count; ++i ) { if( i != 0 ) { sb.Append(", "); } sb.Append(fools[i]); } RequestedBy = sb.ToString(); } else { requestedby = GetProperty("owner", mostRecentBuild); if (requestedby != null && requestedby.Count > 1) { RequestedBy = requestedby[1]; } else { //no idea! RequestedBy = null; } } var uriString = rootUrl + "/builders/" + mostRecentBuild.builderName + "/builds/" + mostRecentBuild.number as string; var webUrl = new Uri(uriString); Url = webUrl.ToString(); BuildId = mostRecentBuild.number.ToString(); buildStatusInfo.LastBuildStatusEnum = BuildStatusEnum; }
public BuildBotBuildStatus(string jsonQuery, string rootUrl) { JavaScriptSerializer jss = new JavaScriptSerializer(); jss.RegisterConverters(new JavaScriptConverter[] { new DynamicJsonConverter() }); dynamic buildStatus = jss.Deserialize <object>(jsonQuery) as dynamic; dynamic mostRecentBuild = buildStatus.MinusOne; Name = BuildDefinitionId = mostRecentBuild.builderName; BuildStatusInfo buildStatusInfo; if (!_buildStatusInfo.TryGetValue(BuildDefinitionId, out buildStatusInfo)) { buildStatusInfo = new BuildStatusInfo(); _buildStatusInfo.Add(BuildDefinitionId, buildStatusInfo); } //see if mostRecentBuild is in progress, complete or broken bool buildInProgress = true; if (mostRecentBuild.times[1] != null) { FinishedTime = FromUnixTime((double)mostRecentBuild.times[1]); buildInProgress = false; } else { FinishedTime = null; } StartedTime = FromUnixTime((double)mostRecentBuild.times[0]); if (buildInProgress) { BuildStatusEnum = BuildStatusEnum.InProgress; } else { try { List <object> text = mostRecentBuild.text; if (text.Contains("successful")) { BuildStatusEnum = BuildStatusEnum.Working; } else if (text.Contains("failed")) { BuildStatusEnum = BuildStatusEnum.Broken; } else { BuildStatusEnum = BuildStatusEnum.Unknown; } } catch (Exception) { BuildStatusEnum = BuildStatusEnum.Unknown; } } try { List <object> changes = mostRecentBuild.sourceStamp.changes; if (changes.Count > 0 && changes[0].GetType() == typeof(Dictionary <String, object>)) { var change = changes[0] as Dictionary <string, object>; if (change != null) { Comment = change["comments"].ToString(); } } } catch (Exception ex) { _log.Error("Error retrieving build bot comments", ex); } if (Comment == null) { Comment = mostRecentBuild.reason; } var requestedby = GetProperty("blamelist", mostRecentBuild); if (requestedby != null && requestedby.Count > 1) { ArrayList fools = requestedby[1]; var sb = new StringBuilder(); for (int i = 0; i < fools.Count; ++i) { if (i != 0) { sb.Append(", "); } sb.Append(fools[i]); } RequestedBy = sb.ToString(); } else { requestedby = GetProperty("owner", mostRecentBuild); if (requestedby != null && requestedby.Count > 1) { RequestedBy = requestedby[1]; } else { //no idea! RequestedBy = null; } } var uriString = rootUrl + "/builders/" + mostRecentBuild.builderName + "/builds/" + mostRecentBuild.number as string; var webUrl = new Uri(uriString); Url = webUrl.ToString(); BuildId = mostRecentBuild.number.ToString(); buildStatusInfo.LastBuildStatusEnum = BuildStatusEnum; }