如何从Jenkins的多行shell中提取命令输出

2uluyalo  于 2023-01-25  发布在  Jenkins
关注(0)|答案(3)|浏览(252)
stage('Deployment'){
                            script {                                   
                                sh """
                                export KUBECONFIG=/tmp/kubeconfig
                                kubectl describe deployment nginx | grep Image"""

                            }
                    }

如何获得“kubectl描述部署nginx”的输出|环境变量中的”grep Image

ycggw6v2

ycggw6v21#

当前的管道版本支持returnStdout,这使您能够从sh/bat命令获得输出,如下所示:

script {
    ENV_VARIABLE = sh(script: 'kubectl describe deployment nginx | grep Image', returnStdout: true)
    echo ENV_VARIABLE
}

另请参见:

  • 管道:节点和进程
yqhsw0fo

yqhsw0fo2#

you can use the sytax:

someVariable = sh(returnStdout: true, script: some_script).trim()
owfi6suc

owfi6suc3#

在这种情况下,可以在env对象中访问管道作用域中的环境变量,并为其成员赋值以初始化新的环境变量;还可以利用sh步骤方法的可选参数returnStdout返回该方法的stdout。并因此将其赋给Groovy变量(因为它位于管道中的script块内)。

script {             
  env.IMAGE = sh(script: 'export KUBECONFIG=/tmp/kubeconfig && kubectl describe deployment nginx | grep Image', returnStdout: true).trim()
}

请注意,您可能还希望将环境指令中的KUBECONFIG环境变量放在pipeline作用域中(除非不同作用域中的kubeconfig不同):

pipeline {
  environment { KUBECONFIG = '/tmp/kubeconfig' }
}

相关问题