Jenkins管道正则表达式不匹配任何东西

时间:2017-09-06 09:00:49

标签: jenkins groovy

我有一个带有示例文本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

预期输出无错误因为应该匹配。

我做错了什么?

1 个答案:

答案 0 :(得分:4)

  • 只需使用=~find operator)代替==~match operator):

    def hasSummaryMatch = (output =~ /\d+ scenarios \([^()]+\)/)
    
  • 当使用匹配运算符==~时,则需要输入字符串的严格匹配