在单个命令中比较 Jenkins 管道中的 2 个参数
Comparing 2 parameters in Jenkins pipeline in a single command
下面的代码有什么问题,比较 groovy
中的 2 个字符串
我正在尝试在一行中比较两个参数以使其看起来更整洁
if (params.dirname == ((params.path =~ ~/${params.dirname}/).with { matches() ? it[0] : null })) {
print success
}
抛出异常 -
java.lang.NoSuchMethodError: No such DSL method 'matches' found among steps
没有必要使您的用例过于复杂。根据:
params.dirname = hde, params.path = /usr/tmp/jenkins/hde/filename.txt or /usr/hde/jenkins/ing/filename.txt or any random path which has hde in it
您正在尝试查找给定字符串 a
是否包含子字符串 b
。可以使用 Java 的方法 String.contains(String substring)
来完成。或者,您可以为此使用正则表达式,但 String.contains()
看起来更容易理解您的意图。考虑以下 Groovy 脚本:
def params = [
dirname: 'hde',
path: '/usr/tmp/jenkins/hde/filename.txt'
]
// Using String.contains()
if (params.path.contains(params.dirname)) {
println "Path '${params.path}' contains '${params.dirname}'"
}
// Using regular expression
if (params.path ==~ /(.*)${params.dirname}(.*)/) {
println "Path '${params.path}' contains '${params.dirname}'"
}
当你 运行 时,两个 if
语句的计算结果为 true
:
Path '/usr/tmp/jenkins/hde/filename.txt' contains 'hde'
Path '/usr/tmp/jenkins/hde/filename.txt' contains 'hde'
下面的代码有什么问题,比较 groovy
中的 2 个字符串我正在尝试在一行中比较两个参数以使其看起来更整洁
if (params.dirname == ((params.path =~ ~/${params.dirname}/).with { matches() ? it[0] : null })) {
print success
}
抛出异常 -
java.lang.NoSuchMethodError: No such DSL method 'matches' found among steps
没有必要使您的用例过于复杂。根据:
params.dirname = hde, params.path = /usr/tmp/jenkins/hde/filename.txt or /usr/hde/jenkins/ing/filename.txt or any random path which has hde in it
您正在尝试查找给定字符串 a
是否包含子字符串 b
。可以使用 Java 的方法 String.contains(String substring)
来完成。或者,您可以为此使用正则表达式,但 String.contains()
看起来更容易理解您的意图。考虑以下 Groovy 脚本:
def params = [
dirname: 'hde',
path: '/usr/tmp/jenkins/hde/filename.txt'
]
// Using String.contains()
if (params.path.contains(params.dirname)) {
println "Path '${params.path}' contains '${params.dirname}'"
}
// Using regular expression
if (params.path ==~ /(.*)${params.dirname}(.*)/) {
println "Path '${params.path}' contains '${params.dirname}'"
}
当你 运行 时,两个 if
语句的计算结果为 true
:
Path '/usr/tmp/jenkins/hde/filename.txt' contains 'hde'
Path '/usr/tmp/jenkins/hde/filename.txt' contains 'hde'