电子邮件扩展插件 - 无法使BUILD_LOG_EXCERPT工作

时间:2016-02-08 17:53:01

标签: email jenkins jenkins-plugins email-ext

无论我在BUILD_LOG_EXCERPT中放入什么,我得到的只是一封空身的电子邮件,因此可以使用一些帮助。

我有一个写入控制台的java程序。 Jenkins控制台输出的片段如下所示:

...
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building project1 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- exec-maven-plugin:1.4.0:java (default-cli) @ project1 ---
Parameters provided: SG, 100, 1000
query: select COUNT(*) from table1 where col1 = ? and col2 = ? and col3 = ?
Rows in table: 5776
Threshold: 100
Rows returned above threshold, skipping dpan generation batch file.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.125 s
[INFO] Finished at: 2016-02-08T09:31:37-08:00
[INFO] Final Memory: 8M/245M
...

在Jenkins工作中,我创建了一个Post Build步骤,并将以下行放在Default Content中:

${BUILD_LOG_EXCERPT, start="\\b(Parameters)\\b", end="\\b(Threshold)\\b"}

当我触发工作时,我得到的只是一封空电子邮件。但是,如果我添加

${BUILD_LOG, maxLines=9999, escapeHtml=false}

然后我在电子邮件中获得完整的控制台输出。有任何想法吗?我使用的是插件版本2.40.3。

2 个答案:

答案 0 :(得分:6)

看起来你的正则表达式找不到任何匹配项,所以你没有得到任何日志行。这是因为BUILD_LOG_EXCERPT变量使用java.util.regex.Pattern.Matcher.matches()来匹配正则表达式 - 如果整个字符串匹配,则只返回True(在{{3}中引用)问题)。日志解析器逐行运行,因此它会针对正则表达式测试整行,并且失败(因为“参数”之后有字符)。

如果您要查找以Parameters开头但后面可能包含字符的字符串,则可以匹配

"\\b(Parameters)\\b(?s).*"

将匹配“参数”及其后的任意字符串。

答案 1 :(得分:5)

email-ext中的

BUILD_LOG_EXCERPT 遵循使用start和end的非常简单的正则表达式匹配。通过使用两个echo语句使其工作,一个在我想要控制台日志的开头,一个在电子邮件中你想要的日志的最终位置。

示例:

在构建步骤中:

echo Start
<your build commands>
echo End

在email-ext的默认部分中,使用以下行来使其正常工作:

${BUILD_LOG_EXCERPT, start="^Start", end="^End"}

如果您使用html电子邮件输出,则可以使用以下行来对齐电子邮件中的输出

<pre>${BUILD_LOG_EXCERPT, start="^Start", end="^End"}</pre>

你可以调整并使其正常工作,希望它对你有用,就像它对我一样。

相关问题