1

我正在 Jenkins 工作流程(Jenkins ver 1.609.1)中迈出第一步,我需要逐行读取文件,然后在每一行上运行正则表达式。我对正则表达式“分组”类型感兴趣,但是“项目”和“状态”变量(下面的代码)在 Jenkins 中获得空值。任何建议什么是错的以及如何解决它?

def line = readFile (file)
def resultList = line.tokenize()
for(item in resultList ){
(item  =~ /(\w+)=(\w+)$/).each { whole, project, status  ->
      println (whole)
      println (project)
      println (status)
    }
}
4

2 回答 2

3

each关闭将不起作用:JENKINS-26481

如果某些使用高级语言功能的东西在独立的 Groovy 中有效,但在 Workflow 中无效,请尝试将其封装在标记为 的方法中@NonCPS。这将有效地将其作为“本机”方法运行。仅对您确定会快速运行且不会阻塞 I/O 的代码执行此操作,因为它将无法在 Jenkins 重新启动后继续存在。

于 2015-08-04T14:33:07.283 回答
2

好吧,在检查了其他一些正则表达式选项后,我想到了以下似乎可行的解决方案:

def matcher = item =~ /(?<proj>\w+)=(?<status>\w+)/
if( matcher.matches() ) { etc...} 
于 2015-07-27T12:40:53.560 回答