【问题标题】:Email Extension Plugin - can't get BUILD_LOG_EXCERPT to work电子邮件扩展插件 - 无法让 BUILD_LOG_EXCEPT 工作
【发布时间】:2016-02-08 17:53:01
【问题描述】:

无论我在 BUILD_LOG_EXCEPT 中输入什么,我得到的只是一封正文为空的电子邮件,因此可以使用一些帮助。

我有一个写入控制台的 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 版本的插件。

【问题讨论】:

    标签: email jenkins jenkins-plugins email-ext


    【解决方案1】:

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

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

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

    这将匹配“参数”和它之后的任意字符串。

    【讨论】:

    • 正则表达式在正则表达式编辑器上工作正常,但在这个特定的输出上不行。 java 程序正在通过 System.out.println() 写入控制台。应用程序输出的格式是否会导致正则表达式不起作用?
    • 我对正则表达式的解析方式有误 - 更新了我的答案:)
    【解决方案2】:

    BUILD_LOG_EXCERT 在 email-ext 中使用 start 和 end 遵循一个非常简单的正则表达式匹配。通过使用两个回显语句使其工作,即一个在我想要控制台日志的开头,一个在你想要的电子邮件日志的结束位置。

    示例:

    在构建步骤中:

    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>
    

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

    【讨论】:

    • 是否可以找到以特殊单词开头的行?
    猜你喜欢
    • 2018-04-27
    • 2019-12-09
    • 1970-01-01
    • 1970-01-01
    • 2023-02-16
    • 2021-04-23
    • 1970-01-01
    • 2022-11-20
    • 2015-05-19
    相关资源
    最近更新 更多