private static void DisplayPublishOnScreen(BuildStoreEventArgs buildStoreEventArgs) { BuildData buildData = buildStoreEventArgs.Data; if (buildStoreEventArgs.Type == BuildStoreEventType.Build) { if (buildData.Status == BuildExecutionStatus.Failed) { Console.WriteLine(buildData.BuildName); ConsoleColor currentForegroundColor = Console.ForegroundColor; Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Build {0} Failed!", buildData.BuildName); Console.ForegroundColor = currentForegroundColor; } else { Console.WriteLine("Build [{0}] ,Status {1}", buildData.BuildName,buildData.Status.ToString()); } } else if (buildStoreEventArgs.Type == BuildStoreEventType.QualityChanged) { Console.WriteLine("Build [{0}] ,Status {1}, Quality{2}", buildData.BuildName, buildData.Status,buildData.Quality); } Tracing.Client.TraceInformation("Supressing Publish Event"); }
private static void Process(IBuildStatusChange notificationChannel, BuildStoreEventArgs buildStoreEventArgs) { switch (buildStoreEventArgs.Data.Status) { case BuildStatus.Succeeded: notificationChannel.OnBuildSuceeded(); Tracing.Client.TraceInformation("Build Succeeded"); break; case BuildStatus.Failed: notificationChannel.OnBuildFailed(); Tracing.Client.TraceInformation("Build Failed"); break; case BuildStatus.Stopped: notificationChannel.OnBuildStopped(); Tracing.Client.TraceInformation("Build Stopped"); break; case BuildStatus.InProgress: notificationChannel.OnBuildStarted(); Tracing.Client.TraceInformation("Build Started"); break; case BuildStatus.PartiallySucceeded: notificationChannel.OnBuildPartiallySucceeded(); Tracing.Client.TraceInformation("Build Partially Succeeded"); break; } }
private IBuildStatusChange CreateChannel(BuildStoreEventArgs buildStoreEventArgs) { string notificationAddress = _notifier.GetNotificationAddress(buildStoreEventArgs.Data.BuildDefinition); if (String.IsNullOrEmpty(notificationAddress)) { throw new ArgumentException("Notification Address is not provided in configuration"); } return GetBuildStatusChangeChannel(notificationAddress); }
public override void Publish(BuildStoreEventArgs buildStoreEventArgs) { string serviceAddress = _notifier.GetNotificationAddress(buildStoreEventArgs.Data.BuildDefinition); BuildManagerExceptionHelper.With(serviceAddress, () => CreateChannel(buildStoreEventArgs) .ExecuteOneWayCall(channel => Process(channel, buildStoreEventArgs)), () => Tracing.Client.TraceInformation("About to Publish... "), () => Tracing.Client.TraceInformation("Sent to Publisher Target")); }
private BuildStoreEventArgs GetBuildStoreEventIfAny(IBuildDetail build) { BuildStoreEventArgs buildStoreEvent; if (!_cacheLookup.ContainsKey(build.Uri.AbsoluteUri)) { _cacheLookup.Add(build.Uri.AbsoluteUri, build); buildStoreEvent = new BuildStoreEventArgs { Type = BuildStoreEventType.Build, Data = Generate(build) }; return buildStoreEvent; } IBuildDetail originalBuild = _cacheLookup[build.Uri.AbsoluteUri]; _cacheLookup[build.Uri.AbsoluteUri] = build; //Handle quality change event if (originalBuild.Quality != build.Quality || originalBuild.Status != build.Status) { buildStoreEvent = new BuildStoreEventArgs { Data = Generate(build), Type = originalBuild.Quality != build.Quality ? BuildStoreEventType.QualityChanged : BuildStoreEventType.Build }; return buildStoreEvent; } return new BuildStoreEventArgs { Data = Generate(build), Type = BuildStoreEventType.Build }; }
private void HandleEvent(BuildStoreEventArgs buildStoreEventArgs) { Task.Factory.StartNew(() => _buildEventPublisher.Publish(buildStoreEventArgs)); }
private void ProcessBuildEvent(BuildStoreEventArgs buildEvent) { Tracing.Client.TraceInformation("Build was requested for " + buildEvent.Data.RequestedFor); switch (buildEvent.Type) { case BuildStoreEventType.Build: Tracing.Client.TraceInformation("Build Event"); HandleEvent(buildEvent); break; case BuildStoreEventType.QualityChanged: Tracing.Client.TraceInformation("Quality Change Event"); HandleEvent(buildEvent); break; default: throw new Exception("Event was not recognised."); } }
private void HandleQualityEvent(BuildStoreEventArgs buildStoreEventArgs) { //if key exists and turned on then dont send the notification if (ShouldDisablePublish()) { DisplayPublishOnScreen(buildStoreEventArgs); } else { _buildEventPublisher.PublishQualityChange(buildStoreEventArgs.Data.BuildName, buildStoreEventArgs.Data.Quality); } }