TFS中構建失敗後是否有獲得成功構建的電子郵件?TFS失敗構建後成功構建的警報
當構建失敗時(我這樣做),我可以收到電子郵件。當構建成功時,我可以收到電子郵件。
但我需要的是要知道構建不再失敗。如果我收到構建失敗的電子郵件,我不想在重新開始工作之前登錄。通過電子郵件獲取這些信息會很好。
TFS中構建失敗後是否有獲得成功構建的電子郵件?TFS失敗構建後成功構建的警報
當構建失敗時(我這樣做),我可以收到電子郵件。當構建成功時,我可以收到電子郵件。
但我需要的是要知道構建不再失敗。如果我收到構建失敗的電子郵件,我不想在重新開始工作之前登錄。通過電子郵件獲取這些信息會很好。
我不相信這將是可能的使用警報資源管理器。但是你可以創建一個定製構建通知的自定義Web服務,然後自己實現這個邏輯。
查看訂閱TFS事件與自己的Web服務這篇文章的詳細信息:http://blog.hinshelwood.com/team-foundation-server-2010-event-handling-with-subscribers/
我現在有失敗和成功構建TFS設置電子郵件警報。 我認爲成功構建電子郵件只是一種喧囂,我只有在最後一次構建失敗時纔會獲得它們。 我的想法是取消任何成功構建TFS警報電子郵件,但啓用失敗後成功 我已經成功地連接代碼,以確定是否最後的構建失敗和當前的構建使用TFS插件成功。
public EventNotificationStatus ProcessEvent(TeamFoundationRequestContext requestContext, NotificationType notificationType,
object notificationEventArgs, out int statusCode, out string statusMessage, out ExceptionPropertyCollection properties)
{
statusCode = 0;
properties = null;
statusMessage = string.Empty;
var objWriter = new System.IO.StreamWriter(@"C:\tfsTests\builds.txt", true);
objWriter.WriteLine(DateTime.Now + "-----------------------------------------------");
objWriter.WriteLine(DateTime.Now + notificationType.ToString());
objWriter.WriteLine(DateTime.Now + notificationEventArgs.ToString());
if ((notificationType == NotificationType.Notification) && (notificationEventArgs is BuildCompletionNotificationEvent))
{
var buildNotificationEventArgs = notificationEventArgs as BuildCompletionNotificationEvent;
objWriter.WriteLine(DateTime.Now + buildNotificationEventArgs.Build.ToString());
objWriter.WriteLine(DateTime.Now + buildNotificationEventArgs.Build.Definition.BuildControllerUri.ToString());
objWriter.WriteLine(DateTime.Now + buildNotificationEventArgs.Build.Definition.LastGoodBuildUri);
objWriter.WriteLine(DateTime.Now + buildNotificationEventArgs.Build.Definition.LastBuildUri);
var locationService = requestContext.GetService<TeamFoundationLocationService>();
var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(
new Uri(locationService.GetServerAccessMapping(requestContext).AccessPoint + "/" + requestContext.ServiceHost.Name));
var buildServer = (IBuildServer)tfs.GetService(typeof(IBuildServer));
var spec = buildServer.CreateBuildDetailSpec(buildNotificationEventArgs.Build.TeamProject, buildNotificationEventArgs.Build.Definition.Name);
spec.MaxBuildsPerDefinition = 2;
spec.QueryOrder = Microsoft.TeamFoundation.Build.Client.BuildQueryOrder.FinishTimeDescending;
var builds = buildServer.QueryBuilds(spec);
if (builds.Builds.Count() == 2)
{
if (builds.Builds[0].Status == BuildStatus.Succeeded && builds.Builds[1].Status != BuildStatus.Succeeded && builds.Builds[0].FinishTime > builds.Builds[1].FinishTime)
objWriter.WriteLine(string.Format("{0}", "Send Email"));
}
}
objWriter.Close();
return EventNotificationStatus.ActionPermitted;
}
我只是不知道如何發送相同的TFS生成電子郵件。你知道如何做到這一點?