我正在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)
}
}
答案 0 :(得分:3)
each
无效:JENKINS-26481
如果使用高级语言功能的东西在独立的Groovy中工作但在工作流中不起作用,请尝试将其封装在标记为@NonCPS
的方法中。这将有效地将其作为“本机”方法运行。只针对您确定会快速运行且不会阻塞I / O的代码执行此操作,因为它无法在Jenkins重启后继续存在。
答案 1 :(得分:2)
那么, 在查看了一些其他正则表达式选项之后,我找到了以下似乎有效的解决方案:
def matcher = item =~ /(?<proj>\w+)=(?<status>\w+)/
if( matcher.matches() ) { etc...}