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

Jenkins - Editable Email Notification Plugin - Fails the whole build

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

可编辑电子邮件通知 插件 - 如果无法访问邮件服务器(端口 25)或出于某种原因如果编辑电子邮件通知 post 操作,则整个构建将失败失败(对于我们在作业配置中设置的各种触发器)。

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

电子邮件触发操作不应将构建标记为失败(如果电子邮件触发部分由于邮件服务器问题而失败)并且 Jenkins 应该将电子邮件排队(以便在邮件服务器启动后稍后发送电子邮件) back/up/online 或 post 操作应该不会对作业的状态产生任何影响)。如果电子邮件触发器失败,只是回显 - 电子邮件发送操作失败,因为邮件服务器由于这个/那个(详细消息)而出现问题。

我怎样才能摆脱这种情况。我有一份很长的 运行ning 工作,我不想重新 运行 它(如果我知道邮件服务器已恢复在线),即使我重新 运行工作,我不能 100% 确定邮件服务器是否 up/running。

只是想看看我们是否可以在编辑电子邮件通知中设置一个选项,以便在电子邮件通知步骤失败时不将构建作业标记为失败(即增强此插件)或其他一些我可以摆脱它的方法情况。

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.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

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

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

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

希望对您有所帮助!