詹金斯工作流程正则表达式

时间:2015-07-27 07:52:16

标签: regex jenkins workflow jenkins-workflow

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

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)
    }
}

2 个答案:

答案 0 :(得分:3)

带有闭包的

each无效:JENKINS-26481

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

答案 1 :(得分:2)

那么, 在查看了一些其他正则表达式选项之后,我找到了以下似乎有效的解决方案:

def matcher = item =~ /(?<proj>\w+)=(?<status>\w+)/
if( matcher.matches() ) { etc...}