gpt4 book ai didi

c# - 如果只有最后一次构建通过 TFS 插件失败,则 TFS 成功构建警报电子邮件

转载 作者:行者123 更新时间:2023-11-30 18:28:13 25 4
gpt4 key购买 nike

我目前有针对失败和成功构建的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com