Jenkins管道我需要执行shell命令,结果是def变量的值。我该怎么办?谢谢

时间:2019-04-27 02:23:57

标签: jenkins-pipeline

Jenkins管道我需要执行shell命令,结果是def变量的值。
我该怎么办?谢谢

def projectFlag = sh("`kubectl get deployment -n ${namespace}| grep ${project} | wc -l`")
    //
    if ( "${projectFlag}" == 1 ) {
         def projectCI = sh("`kubectl get deployment ${project} -n ${namespace} -o jsonpath={..image}`")
         echo "$projectCI"
       } else if ( "$projectCI" == "${imageTag}" ) {
           sh("kubectl delete deploy ${project} -n ${namespaces}")
           def redeployFlag = '1'
            echo "$redeployFlag"
         if ( "$projectCI" != "${imageTag}" ){
          sh("kubectl set image deployment/${project} ${appName}=${imageTag} -n ${namespaces}")
          }
      else {
        def redeployFlag = '2'
      }

1 个答案:

答案 0 :(得分:0)

我相信您在问如何将shell命令的结果保存到变量中以供以后使用?

执行此操作的方法是使用Shell步骤界面上可用的一些可选参数。有关文档,请参见https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#sh-shell-script

def projectFlag = sh(returnStdout: true,
    script: "`kubectl get deployment -n ${namespace}| grep ${project} | wc -l`"
    ).trim()

基本上将returnStdout设置为true.trim()对于确保您不会拾取\n换行符(这会破坏您的评估逻辑)至关重要。