jenkins Pipeline脚本:如何从shell脚本获取返回值

时间:2019-11-08 17:44:35

标签: jenkins jenkins-pipeline

我有一个詹金斯管道,我在不同阶段执行不同的脚本。但是,在一个阶段中,我想将阶段的输出传递到一个变量,在该变量中,我希望将该变量作为下一个阶段的输入进行传递。这是我在Jenkinsfile中的代码

timestamps
{
  node('cf_slave')
  {
    checkout scm
    stage('Download HA image from GSA')
    {
      withCredentials(usernamePassword(credentialsId: 'ssc4icp_GSA', usernameVariable: 'GSA_USERNAME', passwordVariable: 'GSA_PASSWORD')
      {
        environment {
          script {
            OUTPUT = """${sh(
                            returnStdout: true,
                            script: 'bash jenkins/try_install.sh $VAR_ABC'
                         )}"""
            echo $OUTPUT
          }   
        }
      }       
    }
}
}

我在这里遇到语法错误。我想在OUTPUT变量中获取OUTPUT并将其传递到下一阶段。请帮助我以正确的方式完成操作

1 个答案:

答案 0 :(得分:0)

在字符串之外引用变量时,不应使用美元符号($)。代码应为(包括Matt建议的更改):

timestamps
{
  node('cf_slave')
  {
    checkout scm
    stage('Download HA image from GSA')
    {
      withCredentials(usernamePassword(credentialsId: 'ssc4icp_GSA', usernameVariable: 'GSA_USERNAME', passwordVariable: 'GSA_PASSWORD'))
      {
        environment {
          script {
            OUTPUT = sh returnStdout: true,
                     script: "bash jenkins/try_install.sh $VAR_ABC"
            echo OUTPUT
          }   
        }
      }
    }
  }
}