private static CiEvent ConvertToCiEvent2019(Microsoft.TeamFoundation.Build2.Server.BuildData build) { TfsBuildInfo buildInfo = new TfsBuildInfo(build.Id.ToString(), build.BuildNumber, build.ProjectId.ToString(), build.Definition.Id.ToString()); bool isManualCause = Microsoft.TeamFoundation.Build2.Server.BuildReason.Manual.Equals(build.Reason); var ciEvent = createEvent(buildInfo, build.Definition.Name, isManualCause, build.StartTime, build.FinishTime); if (build.Result.HasValue) { switch (build.Result) { case Microsoft.TeamFoundation.Build2.Server.BuildResult.Succeeded: ciEvent.BuildResult = CiBuildResult.Success; break; case Microsoft.TeamFoundation.Build2.Server.BuildResult.Failed: ciEvent.BuildResult = CiBuildResult.Failure; break; case Microsoft.TeamFoundation.Build2.Server.BuildResult.Canceled: ciEvent.BuildResult = CiBuildResult.Aborted; break; case Microsoft.TeamFoundation.Build2.Server.BuildResult.PartiallySucceeded: ciEvent.BuildResult = CiBuildResult.Unstable; break; default: ciEvent.BuildResult = CiBuildResult.Unavailable; break; } } return(ciEvent); }
public EventNotificationStatus ProcessEvent(IVssRequestContext requestContext, NotificationType notificationType, object notificationEventArgs, out int statusCode, out string statusMessage, out Microsoft.TeamFoundation.Common.ExceptionPropertyCollection properties) { //Log.Info($"ProcessEvent {notificationEventArgs.GetType().Name} - {notificationEventArgs.ToString()}"); //Log.Info(JsonHelper.SerializeObject(notificationEventArgs, true)); statusCode = 0; properties = null; statusMessage = String.Empty; try { #if Package2019 if (notificationEventArgs is Microsoft.TeamFoundation.Build2.Server.BuildEventBase) { Microsoft.TeamFoundation.Build2.Server.BuildData build = (Microsoft.TeamFoundation.Build2.Server.BuildData)((Microsoft.TeamFoundation.Build2.Server.BuildEventBase)notificationEventArgs).Build; Log.Info($"ProcessEvent {notificationEventArgs.GetType().Name} for project {build.ProjectId}, status: {build.Status}, BuildNumber: {build.BuildNumber}, DefinitionName: {build.Definition.Name}, DefinitionId: {build.Definition.Id}"); CiEvent ciEvent = ConvertToCiEvent2019(build); if (notificationEventArgs is Microsoft.TeamFoundation.Build2.Server.BuildStartedEvent) { ciEvent.EventType = CiEventType.Started; _pluginManager.GeneralEventsQueue.Add(ciEvent); } else if (notificationEventArgs is Microsoft.TeamFoundation.Build2.Server.BuildCompletedEvent) { ciEvent.EventType = CiEventType.Finished; _pluginManager.HandleFinishEvent(ciEvent); } } #endif } catch (Exception e) { var msg = $"ProcessEvent {notificationEventArgs.GetType().Name} failed {e.Message}"; Log.Error(msg, e); } return(EventNotificationStatus.ActionPermitted); }