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

Email Extension Plugin - can't get BUILD_LOG_EXCERPT to work

无论我在 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_LOG_EXCERPT, start="\b(Parameters)\b", end="\b(Threshold)\b"}

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

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

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

email-ext 中的

BUILD_LOG_EXCERPT 遵循使用开始和结束的非常简单的正则表达式匹配。通过使用两个 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>

您可以调整并让它工作,希望它对您有用,就像对我一样。

您的正则表达式似乎找不到任何匹配项,因此您没有收到任何日志行。这是因为 BUILD_LOG_EXCERPT 变量使用 java.util.regex.Pattern.Matcher.matches() 来匹配正则表达式 - 如果 整个 字符串匹配,这只会 return True (在 this SO 问题中引用)。日志解析器是 运行 一行一行的,所以它会根据你的正则表达式测试你的整行并且失败(因为 "Parameters" 之后有字符)。

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

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

将匹配 "Parameters" 及其后的任意字符串。