电子邮件扩展插件 - 无法使 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" 及其后的任意字符串。
无论我在 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 版本。
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" 及其后的任意字符串。