我有一个带有示例文本的正则表达式,该正则表达式正在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!")
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已经使用在官方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
Run Code Online (Sandbox Code Playgroud)
预期的输出没有错误,因为应该有一个匹配项。
我究竟做错了什么?
只需使用=~(find运算符)而不是==~(match运算符):
def hasSummaryMatch = (output =~ /\d+ scenarios \([^()]+\)/)
Run Code Online (Sandbox Code Playgroud)当使用匹配运算符时==~,则需要对输入字符串进行严格匹配
| 归档时间: |
|
| 查看次数: |
8426 次 |
| 最近记录: |