public void executeJob() { String status = Messenger.Instance.getStatus(); if (status.Contains("Online") && config.activeMessaging && isWorkToday()) { if (config.bldStatusChanged || config.bldFroze || config.eachBuildStatus) { BuildConnector lastBuild = new BuildConnector(config.url, true); if (lastBuild.isValid()) { BuildConnector finishedBuild; Trace.WriteLine(String.Format("\\\\ Checking {0} #{1} with actual status: {2} and previous status {3}", config.name, lastBuild.getNumber(), lastBuild.getStatus().ToUpper(), config.lastBuildStatus.ToUpper())); if (config.bldFroze) buildFrozen(lastBuild); if (lastBuild.getStatus() == BuildConnector.activeBuild) { int prevBildNumber = lastBuild.getNumber() - 1; finishedBuild = new BuildConnector(config.url, prevBildNumber); } else { finishedBuild = lastBuild; } if (finishedBuild.isValid()) { if (config.bldStatusChanged) buildStatusCnahged(finishedBuild); if (config.eachBuildStatus) eachBuildStatus(finishedBuild); if (config.bldStillRed) buildStillRed(finishedBuild); updateConfig(finishedBuild); } } } if (config.dailyReport) dailyReport(); if (config.grpStatusMonitoring) groupStatusMonitoring(); } if (!String.IsNullOrEmpty(updateConfigStatus) && status.Contains(updateConfigStatus)) { TaskLauncher.closeThreads(); Messenger.Instance.goOnline(); } }
public BuildStillRedMonitor(BuildConnector build) { this.build = build; }
private void updateConfig(BuildConnector build) { if(build.getNumber() != config.lastBuildNumber) { if (!BuildConnector.abortedPattern.Contains(build.getStatus())) Config.Instance.Find(x => x.name == config.name).lastBuildStatus = getStatusPattern(build.getStatus()); Config.Instance.Find(x => x.name == config.name).lastBuildNumber = build.getNumber(); Config.Instance.Find(x => x.name == config.name).lastFinishTime = build.getTimestamp() + build.getDuraction(); } }
private void eachBuildStatus(BuildConnector build) { if (config.lastBuildNumber < build.getNumber()) { BuildStatusMonitor monitor = new BuildStatusMonitor(build); monitor.prepareData(config.eachBuildStatusConfigs); if (monitor.isValid()) { String messageText = monitor.getMessage(); if (!String.IsNullOrEmpty(messageText)) Messenger.Instance.sendMessage(config.messengerChatId, messageText); } } }
private void buildStillRed(BuildConnector build) { if (build.getNumber() != config.lastBuildNumber) { if (config.lastBuildNumber != 0) { BuildStillRedMonitor buildStillRedMonitor = new BuildStillRedMonitor(build); String message = buildStillRedMonitor.getMessage(config); if (!String.IsNullOrEmpty(message)) Messenger.Instance.sendMessage(config.messengerChatId, message); } } }
private void buildStatusCnahged(BuildConnector build) { if (!config.lastBuildStatus.Contains(build.getStatus()) && config.lastBuildNumber < build.getNumber()) { BuildStatusMonitor monitor = new BuildStatusMonitor(build); monitor.prepareData(config.bldStatusChangedConfigs); if (monitor.isValid()) { if (config.buildStatusTopicChange) { String newTopic = monitor.getTopic(); String actualTopic = Messenger.Instance.getTopicName(config.messengerChatId); if (!String.IsNullOrEmpty(newTopic) && newTopic != actualTopic) { newTopic = "/topic " + newTopic; Messenger.Instance.sendMessage(config.messengerChatId, newTopic); } } String messageText = monitor.getMessage(); if (!String.IsNullOrEmpty(messageText)) Messenger.Instance.sendMessage(config.messengerChatId, messageText); } } }
private void buildFrozen(BuildConnector build) { if (build.getStatus() == BuildConnector.activeBuild) { long workingTime = TimeUtils.timestampToSeconds(TimeUtils.getTimestamp() - build.getTimestamp()); if (workingTime > config.bldFrozenTimeout && build.getNumber() != config.lastFrozenBuild) { workingTime = workingTime / 60; Messenger.Instance.sendMessage(config.messengerChatId, String.Format(config.bldFrozenMessage, build.getNumber(), workingTime)); Config.Instance.Find(x => x.name == config.name).lastFrozenBuild = build.getNumber(); } } }
public BuildStatusMonitor(BuildConnector build) { this.build = build; }