Конвейер Jenkins Мне нужно выполнить команду оболочки, и результатом будет значение переменной def.Что мне делать?Спасибо - PullRequest
0 голосов
/ 27 апреля 2019

конвейер Jenkins Мне нужно выполнить команду оболочки, и результатом будет значение переменной 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 голосов
/ 28 апреля 2019

Я полагаю, вы спрашиваете, как сохранить результат команды оболочки в переменную для дальнейшего использования?

Способ сделать это - использовать некоторые необязательные параметры, доступные в интерфейсе шага оболочки. См. 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, который разрушит вашу логику оценки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...