Повторять список и использовать регулярные выражения matches() в конвейере jenkins groovy

#groovy #jenkins-pipeline #jenkins-groovy

#groovy #дженкинс-конвейер #дженкинс-заводной

Вопрос:

У меня есть следующий код, который просматривает записи в 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
            }
          }
        }
      }
  

Обратите внимание на добавленную попытку регулярного выражения (.*) .

Это не удается.

Каков правильный способ сделать это в этом скрипте?

Ответ №1:

Ваш код пытается вызвать его.Назовите, как если бы это была функция. Вам нужно создать строку:

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