Jenkins - 可编辑的电子邮件通知插件 - 使整个构建失败

时间:2015-08-17 22:02:27

标签: email jenkins notifications jenkins-plugins status

在Jenkins,有一个插件,用于在作业运行各种触发器后发送通知。此插件依赖于在Jenkins全局配置中设置邮件服务器。

可编辑的电子邮件通知插件 - 如果无法访问邮件服务器(端口25)或由于某种原因(如果编辑电子邮件通知发布操作失败)(对于我们在工作的配置)。

现在,如果我有一个构建/部署工作成功完成(在做主要工作)但在发送电子邮件部分失败(由于某些邮件服务器问题)那么为什么它将整个工作标记为失败。

电子邮件触发器操作不应将构建标记为FAILED(如果电子邮件触发器部件由于邮件服务器问题而失败),并且Jenkins应该将电子邮件排队(稍后在邮件服务器返回时发送电子邮件/上线/上线或后期操作应该对工作状态没有任何影响)。如果电子邮件触发器失败,则只需回显 - 电子邮件发送操作失败,因为邮件服务器由于此/那(详细消息)而出现问题。

我怎样摆脱这种情况。我有一份长期工作,我不想重新运行它(如果我知道邮件服务器重新上线),即使我重新开始工作,我也不是100%肯定邮件服务器将启动/运行。

试着看看我们是否可以在编辑电子邮件通知中设置一个选项,如果电子邮件通知步骤失败(即对此插件的增强)或者其他一些我可以摆脱的方式,则不会将构建作业标记为FAILED这种情况。

17:15:55 ERROR: Could not send email as a part of the post-build publishers.
17:15:55 javax.mail.MessagingException: Could not connect to SMTP host: my-mailhost.company.com, port: 25;
17:15:55   nested exception is:
17:15:55    java.net.ConnectException: Connection refused
17:15:55    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
17:15:55    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
17:15:55    at javax.mail.Service.connect(Service.java:295)
17:15:55    at javax.mail.Service.connect(Service.java:176)
17:15:55    at javax.mail.Service.connect(Service.java:125)
17:15:55    at javax.mail.Transport.send0(Transport.java:194)
17:15:55    at javax.mail.Transport.send(Transport.java:124)
17:15:55    at hudson.plugins.emailext.ExtendedEmailPublisher.sendMail(ExtendedEmailPublisher.java:306)
17:15:55    at hudson.plugins.emailext.ExtendedEmailPublisher._perform(ExtendedEmailPublisher.java:281)
17:15:55    at hudson.plugins.emailext.ExtendedEmailPublisher.perform(ExtendedEmailPublisher.java:233)
17:15:55    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
17:15:55    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:772)
17:15:55    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:736)
17:15:55    at hudson.model.Build$BuildExecution.cleanUp(Build.java:192)
17:15:55    at hudson.model.Run.execute(Run.java:1778)
17:15:55    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
17:15:55    at hudson.model.ResourceController.execute(ResourceController.java:88)
17:15:55    at hudson.model.Executor.run(Executor.java:234)
17:15:55 Caused by: java.net.ConnectException: Connection refused
17:15:55    at java.net.PlainSocketImpl.socketConnect(Native Method)
17:15:55    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
17:15:55    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
17:15:55    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
17:15:55    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
17:15:55    at java.net.Socket.connect(Socket.java:519)
17:15:55    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:286)
17:15:55    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:231)
17:15:55    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1900)
17:15:55    ... 17 more
17:15:55 Finished: FAILURE

1 个答案:

答案 0 :(得分:1)

虽然我重新检查了插件的配置,但没有找到任何选项来摆脱电子邮件插件中的情境。

如我所知,也许Parameterized Trigger Plugin可以以其他方式节省您的时间。

  1. 创建两个作业:project-A(main)和project-B
  2. 在主项目A中配置在其他项目上触发参数化构建,以便触发项目B运行。
  3. 如果主要项目-A稳定运行,Project-B只会发送电子邮件。因此,主项目-A的结果不会受到离线邮件服务器的影响。
  4. 电子邮件中所需的参数可以通过插件轻松传输。
  5. 我希望这可以帮到你!

相关问题