声明性管道中变量的Jenkins问题

vtwuwzda  于 2023-06-21  发布在  Jenkins
关注(0)|答案(2)|浏览(122)

I make stage:

pipeline {
  agent { label 'built-in' }
    stages {  
      stage("processing_CadEx") {
        steps {  
         script {
          def BuildTarget = sh(script: "cat /tmp/BuildTargets_202", returnStdout: true)
          echo "BuildTarget = ${BuildTarget}"
          if ( "${BuildTarget}" == "CadEx") {
            "BuildTarget2 = ${BuildTarget}"
          }
        }              
      }
    }  
  }
}

and get output:
[Pipeline] { (proc_CadEx)
[Pipeline] script
[Pipeline] {
[Pipeline] sh
+ cat /tmp/BuildTargets_202
[Pipeline] echo
BuildTarget = CadEx

[Pipeline] }
[Pipeline] // script

BuildTarget2未打印,但变量BuildTarget似乎已正确定义并打印为CadEx
我做了很多实验,但“如果”并不像我想的那样工作

vlurs2pr

vlurs2pr1#

问题出在您的if块内。将其改为:

if ("${BuildTarget}" == "CadEx") {
    def BuildTarget2 = "${BuildTarget}"
    echo "BuildTarget2 = ${BuildTarget2}"
}

您在整个语句周围放置了"",这是错误的,并且您没有回显BuildTarget2的值,这就是为什么您在控制台输出中看不到任何内容。
我测试了你的管道与这两个改变和其他一切似乎都很好。

rqenqsqc

rqenqsqc2#

看到后面的空行了吗

BuildTarget = CadEx

意味着你的字符串在末尾有一个新的行。您正在比较的字符串-不。添加.trim()。你也不需要这个"${BuildTarget}"的废话,BuildTarget已经是一个字符串。

相关问题