На основе проверки REGEX я пытаюсь установить значение, которое не происходит, как ожидалось, в конвейере Groovy Jenkins. Если версия = 1.1.1, 1.5.9 или 9.9.9, то это должно быть управляемое хранилище, иначе 1.22.9 или 1.99.9... хранилище tmp. Ниже то, что я пробовал с
String artefact_bucket_name
def artefact_version = "1.99.0"
if (artefact_version ==~ /[0-9]{1}\.[0-9]{1}\.[0-9]{1}/) {
artefact_bucket_name = "managed-artefact-store"
}
if (artefact_version ==~ /[0-9]{1}\.[0-9]{1,2}\.[0-9]{1}/) {
artefact_bucket_name = "tmp-artefact-store"
}
echo "Application version to deploy is ${artefact_version} from Artefact store ${artefact_bucket_name}"
Похоже, у вас есть ошибка во втором регулярном выражении, которое переопределяет первое. например когда у вас есть artefact_version = 1.1.1
- он также соответствует первому регулярному выражению и второму регулярному выражению, поэтому всегда будет tmp-artefact-store
.
Я бы изменил второе регулярное выражение, чтобы оно соответствовало строке, например:
/[0-9]{1}\.[0-9]{2}\.[0-9]{1}/
- Обратите внимание, я изменил {1,2}
только на {2}
. Это будет соответствовать исключительно таким строкам, как "\d.\d\d.\d", поэтому версия типа 1.1.1
будет соответствовать только первому регулярному выражению, а версия типа 1.99.9
- только второму.
Обратите внимание, что вы можете опустить {1}
из шаблона.
Спасибо за это. Четвертая птица, попробовал ее опустить и получил тот же результат. Ваше здоровье
Спасибо. Я пропустил, заметив это переопределение. Из-за наличия {1,2} это было переопределено. Изменение на {2} решило проблему.