一尘不染

在变量中使用正则表达式的groovy if语句

jenkins

我想删除以AAA开头的Jenkins作业列表(例如)

当我用显式字符串做它很好用

if (item.name ==~ /AAA.*/){  
    item.delete()
 }

但是,当我尝试从Jenkins Build属性获取正则表达式时,我失败了,并且if没有被调用…

import hudson.model.*
import hudson.node_monitors.*
import hudson.slaves.*
import java.util.concurrent.*

jenkins = Hudson.instance

def thr = Thread.currentThread()

def build = thr?.executable

String REGEX = build.environment.get("Include_Regex")

println "REGEX is " + REGEX

for (item in jenkins.items){
   println("\t ${item.name}");
   println("\t ${item.name.getClass()}");
   if (item.name ==~ REGEX){  
       item.delete()
       println("TEST");
    }

}

运行它时,我会得到所有作业的列表:在工作区中构建/ var / lib / jenkins / jobs / Bulk_Delete_Job /
workspace

REGEX is /AAA.*/
     AAA_test_1
     class java.lang.String
     AAA_test_2
     class java.lang.String
     AAA_test_3
     class java.lang.String
     Bulk_Delete_Job
     class java.lang.String
     ConfiguredJob
     class java.lang.String
     JobZ
     class java.lang.String
     TEST_SCM
     class java.lang.String

但是什么也不会被删除/不会打印“ TEST”-> if永远都不是…。

需要协助,谢谢!


阅读 635

收藏
2020-07-25

共1个答案

一尘不染

字符串不应该包含斜杠-使用AAA。代替/AAA./。

2020-07-25