迭代列表并在jenkins groovy管道中使用matchs正则表达式

问题描述

我有以下代码来查看blacklist.txt文件中的条目snd将条目黑名单。

      String blacklist = readFile file: "${WORKSPACE}/blacklist.txt"
      def instances = readJSON file: "${WORKSPACE}/ec2_instances.json"
      instances.each {
        if(it.Id) {
          it.each {
            if (blacklist.contains(it.Name)) {
              println 'The instance ' + it.Name + 'is blacklisted and will not be killed'
            } else {
              println 'Triggering killer job to terminate instance ' + it.Name + '-' + it.Id
            }
          }
        }
      }

我想在代码中对Name使用正则表达式。为此,我知道我可以使用matches代替contains。 但是,我似乎找不到添加正则表达式的正确语法。 这是我尝试过的:

      String blacklist = readFile file: "${WORKSPACE}/blacklist.txt"
      def instances = readJSON file: "${WORKSPACE}/ec2_instances.json"
      instances.each {
        if(it.Id) {
          it.each {
            if (blacklist.matches(it.Name(.*))) {
              println 'The instance ' + it.Name + 'is blacklisted and will not be killed'
            } else {
              println 'Triggering killer job to terminate instance ' + it.Name + '-' + it.Id
            }
          }
        }
      }

请注意在正则表达式(.*)添加的尝试。

这失败。

在此脚本中执行此操作的正确方法是什么?

解决方法

您的代码尝试调用它。名称就像它是一个函数一样。您需要输入一个字符串:

blacklist.matches("${it.Name}(.*)")