#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}(.*)")