12

我被困在通过 jenkins 运行 perl 脚本的地步,我希望发送有条件的电子邮件通知。

例如 .. 如果在脚本结束时某个变量的值 > 1,则发送电子邮件通知,否则不发送

有人可以帮我吗?或者知道更好的方法来做到这一点?

4

4 回答 4

5

但是,我没有这些:

有一个Any Build Step插件。除其他外,它允许将构建后的操作作为构建步骤执行。理论上,这应该允许您在构建后执行“可编辑电子邮件通知”步骤作为构建步骤。这是此解决方案中最大的通配符。先试试这个。我不知道在 Jenkins 的工作“构建周期”完成之前,电子邮件通知是否会正常工作。

接下来,有条件构建步骤插件。它允许您根据各种条件执行构建步骤。

如果您能够使用“任何构建步骤”插件在构建周期的中间触发电子邮件,您应该能够使用“条件构建步骤”插件将其包装起来,以便有条件地执行。

让我知道这是否真的有效

于 2014-04-10T13:32:05.937 回答
5

这可以使用解决

Email-ext 插件 https://wiki.jenkins.io/display/JENKINS/Email-ext+plugin

您可以使用上面的链接查看有关插件的信息

  1. 如果我是正确的,您想根据您的构建条件结果发送邮件。
  2. 您可以在可编辑的电子邮件通知中为此使用触发器。
  3. 您可以使用构建后步骤和构建前步骤根据您的条件触发电子邮件
  4. 您需要为您的要求编写脚本并将其放置在后期和预构建步骤中。
于 2014-06-30T08:50:36.590 回答
1

我遇到了类似的情况,当詹金斯构建日志有一个字符串时,我需要发送一封电子邮件。这是我在 jenkins 作业的 presend 脚本中的处理方式。

logger.println(build.getLog(50))
if (build.getLog(50).contains("NoChangesPresent")) {
  cancel = true;
}

我正在尝试获取最后 50 行构建日志并搜索它以查看是否存在字符串。如果它存在,那么我将取消设置为 true,这将停止触发来自詹金斯的电子邮件。

希望这可以帮助。

于 2017-03-16T15:42:10.460 回答
1

我喜欢siri的回答。有一个想法缺失。

logger.println(build.getLog(50)) if
(build.getLog(50).toString().contains("NoChangesPresent")) {   cancel = true; }

如果不先将其转换为字符串, contains 似乎不会起作用。祝你好运!

于 2019-04-26T15:46:50.343 回答