首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解析输出jenkins控制台、返回值和在变量中保存

如何解析输出jenkins控制台、返回值和在变量中保存
EN

Stack Overflow用户
提问于 2022-09-06 12:50:29
回答 1查看 88关注 0票数 0

我在解析jenkins管道控制台输出时遇到了困难。每次我传递作业时,控制台中都会出现一行:

代码语言:javascript
复制
12:29:08 [10:29:07] NIDD version is: SBTS23R1_NIDD_2217_100_01

我想从它中提取一个变量值: SBTS23R1_NIDD_2217_100_01并将其保存在一个变量中,以便我可以进一步使用它。

我试图做如下所述的事情:GROOVY:如果找到regexp字符串,则从控制台输出中查找字符串。

不幸的是,我得到了错误:

代码语言:javascript
复制
an exception which occurred:
    in field com.cloudbees.groovy.cps.impl.BlockScopeEnv.locals
    in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@20cd216a
    in field com.cloudbees.groovy.cps.impl.CpsClosureDef.capture
    in object com.cloudbees.groovy.cps.impl.CpsClosureDef@3e3cd6ed
    in field com.cloudbees.groovy.cps.impl.CpsClosure.def
    in object org.jenkinsci.plugins.workflow.cps.CpsClosure2@6be3d3c7
    in field org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.closures
    in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@14fde9cd
    in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@14fde9cd
Caused: java.io.NotSerializableException: java.util.regex.Matcher

我的代码:

代码语言:javascript
复制
def matcher = ("12:29:08 [10:29:07] NIDD version is: SBTS23R1_NIDD_2217_100_01" =~ /NIDD version is:\SBTS\d{2}\w\d_NIDD_\d{4}_\d{3}_\d{2}/) 

if (matcher.hasGroup()) 
{ 
  def msg = matcher[0][1] println("Build failed because of ${msg}") 
}
EN

回答 1

Stack Overflow用户

发布于 2022-09-06 15:00:09

您需要使用捕获组,并在冒号和SBT之间占用任意数量的空格(您错误地转义了S,使S在非空格匹配的速记字符类中成为SBT的一部分):

代码语言:javascript
复制
def matcher = ("12:29:08 [10:29:07] NIDD version is: SBTS23R1_NIDD_2217_100_01" =~ /NIDD version is:\s*(SBTS\d{2}\w\d_NIDD_\d{4}_\d{3}_\d{2})/)
if (matcher) {
    def msg = matcher[0][1]
    println("Build failed because of ${msg}")
}

Groovy演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73622379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档