比较管道插件jenkins中的字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比较管道插件jenkins中的字符串相关的知识,希望对你有一定的参考价值。

我正在使用jenkins的管道插件构建流程管道。我有一些我必须触发的工作。为了决定我必须使用哪个下一步,我在文件中写了一个返回码。在此之后,我读了这个文件并做出决定。但比较不起作用。

def returnCode = readFile 'return'

//IP in Datenbank
if ( returnCode == "1" ){
}
else{
}

当我尝试echo returnCode时,脚本在控制台上打印“1”,但它总是进入else部分。比较有什么问题?

答案

使用“trim()”提到的评论之一。这很可能是问题所在。

每当我在调试时打印字符串时,我总是这样打印它们:

println "label[${variable}]"

如果在输出中看到一行上的值和下一行上的“]”(或者只是附加空格),则表明您必须“修剪()”该值。

另一答案

PLS检查这个

node ('master'){
    def returnCode = 2
    sh 'echo returnCode'

    //IP in Datenbank
    if ( returnCode == "1" ){
        sh 'echo 1111'
    }
    else{
        sh 'echo not 11111 !!!'
    }
}

尝试它,它的工作原理,而不是用文件中的读取替换静态vac并检查。

另一答案

PLS检查这个

node ('master'){
    def returnCode = 1
    println (returnCode)

    if( returnCode == 1 ) {
        sh 'echo 1 !!'
    }
    else{
        sh 'echo not 1 !!!'
    }
}
另一答案

我面临同样的问题。问题在于新线或空格字符。例如:

status = getstat()
if (status == "started"){
  println("in if")
} else {
  println("in else")
}

def getstat() {
  def out = new StringBuilder(), err = new StringBuilder()
    status = 'echo started'.execute()
  status.consumeProcessOutput(out, err)
  println "out> $out err> $err"
  println(out)
  return out
}

o / p是:

out> started
 err> 
started

in else

现在只需将返回值更改为

return out.replaceAll("[\n\r]", "");

现在o / p是:

out> started
 err> 
started

in if

以上是关于比较管道插件jenkins中的字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何使用管道代码覆盖默认的 Jenkins Git 插件检出?

Jenkins管道最佳实践Top 10

用于 Jenkins 管道的 Docker 插件 - uid 1005 不存在用户

Jenkins如何使用AnchorChain插件向Jenkins管道添加外部URL

Jenkins:是不是可以使用 Jenkinsfile 创建常春藤工作? (管道即代码)

使用 Jenkins 管道将多个 git 存储库签出到同一个作业中