我有一个带有示例文本that is working on regex101的正则表达式,但似乎无法在我的Jenkins管道方案中运行。所以我假设我的管道脚本中出现了错误,但我看不到它在哪里。
这是一个复制品:
pipeline {
agent any
stages {
stage ('Test') {
steps {
script {
echo ("Test")
output = "Some text. \n\n 12 scenarios (3 failed, 2 success) plus text \n\n and some more text"
def hasSummaryMatch = (output ==~ /\d+ scenarios \([^()]+\)/)
echo ("hasSummaryMatch = " + hasSummaryMatch)
if (!hasSummaryMatch) {
error ("No summary!")
}
}
}
}
}
}
我已经在官方Docker容器中运行Jenkins 2.60.2对此进行了测试。
这提供了以下(缩写)输出:
Started by user Administrator
Running on master in /var/jenkins_home/workspace/Test001
Test
hasSummaryMatch = false
ERROR: No summary!
Finished: FAILURE
预期输出无错误因为应该匹配。
我做错了什么?
答案 0 :(得分:4)
只需使用=~
(find operator)代替==~
(match operator):
def hasSummaryMatch = (output =~ /\d+ scenarios \([^()]+\)/)
当使用匹配运算符==~
时,则需要输入字符串的严格匹配