我目前有关于失败和成功构建的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构建电子邮件。你知道怎么做吗?
最佳答案
您已订阅构建事件。如果您使用的是TFS 2013或VSO,则可以通过Web访问打开您的团队项目,然后单击右上角的齿轮以转到管理端。应该有一个“警报”选项卡。
如果您仍在Visual Studio中的2012年之前的服务器上,则可以在团队资源管理器中的团队项目上单击鼠标右键,然后编辑警报。
关于c# - 如果通过TFS插件只有最后一次构建失败,则TFS成功构建警报电子邮件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25397194/