Exemplo n.º 1
0
        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"));
        }
Exemplo n.º 5
0
        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
            };
        }
Exemplo n.º 6
0
 private void HandleEvent(BuildStoreEventArgs buildStoreEventArgs)
 {
     Task.Factory.StartNew(() => _buildEventPublisher.Publish(buildStoreEventArgs));
 }
Exemplo n.º 7
0
        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.");
            }
        }
Exemplo n.º 8
0
 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);
     }
 }