如何在Jenkins的BUILD_LOG_REGEX上使用正则表达式获取两个文本之间的文本

icomxhvb  于 2022-11-18  发布在  Jenkins
关注(0)|答案(3)|浏览(243)

我正试图从Jenkins日志中获取应用程序的版本,并将其发送到电子邮件。
日志(其中一部分)为:

[INFO] Image 03127cdb479b: Layer already exists
[INFO] Image 9c742cd6c7a5: Layer already exists
[INFO] Image 1f8a8b50f407: Pushing
[INFO] Image 1f8a8b50f407: Pushed
[INFO] 4.2.3-202211071000: digest: sha256:[large_number] size: 2415
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

我只需要4.2.3-202211071000部分,因此我正在执行:

${BUILD_LOG_REGEX, regex="(?<=\[INFO])(.*)(?=: digest)", maxMatches=1, showTruncatedLines=false, substText="$1"}

但这将返回整个行:

[INFO] 4.2.3-202211071000: digest: sha256:[large_number] size: 2415

不仅是“[INFO]“和“:我该怎么做呢?

1l5u6lss

1l5u6lss1#

尝试以下模式:(?<=\[INFO\] )[-\d\.]+(?=:)
有关RegEx的详细信息,请参见here

xn1cxnb4

xn1cxnb42#

检查以下模式。

regex="(\\[INFO\\] (.*): digest)"
gz5pxeao

gz5pxeao3#

我可以通过使用另一个令牌并使用日志的另一行进行匹配来实现这一点:

${BUILD_LOG_MULTILINE_REGEX, regex="(?<=Building [NOME OF THE PROJECT] )(.*)", maxMatches=1, showTruncatedLines=false}

相关问题