Команды оболочки в Jenkins Pipeline не выполняются - PullRequest
0 голосов
/ 13 мая 2018

Я хочу выполнить команду cURL , извлечь переменную Json (используя jq) и сохранить в переменной в Jenkins Pipeline. В Freestyle проекте под Build , когда я выбираю Execute Shell и даю команды ниже, и я получаю действительные Success выходные данные со всеми значениями.

deployment_info=$(curl -H "Authorization: Basic a123=" "https://api.sample.com/v1") 

rev_num=$(jq -r .environment[0].revision[0].name <<< "${deployment_info}" ) 
env_name=$(jq -r .environment[0].name <<< "${deployment_info}" ) 
api_name=$(jq -r .name <<< "${deployment_info}" ) 
org_name=$(jq -r .organization <<< "${deployment_info}" )

declare -r num1=1
pre_rev=$(expr "$rev_num" - "$num1")

echo $rev_num
echo $api_name
echo $org_name
echo $env_name
echo $pre_rev

Теперь я хочу выполнить тот же набор команд в конвейере. Так что это мой Трубопровод ,

def deployment_info
def rev_num
def env_name
def org_name
def api_name
def pre_rev
def num1

node {


 stage('Integration Tests') {
  sh "deployment_info=\$(curl --header 'Authorization: Basic abc123=' 'https://api.sample.com/v1')"
  sh "rev_num=\$(jq -r .environment[0].revision[0].name <<< \"${deployment_info}\")"
  sh "env_name=\$(jq -r .environment[0].name <<< \"${deployment_info}\" ) "
  sh "api_name=\$(jq -r .name <<< \"${deployment_info}\" ) "
  sh "org_name=\$(jq -r .organization <<< \"${deployment_info}\" )"

  sh "declare -r num1=1"
  sh "pre_rev=\$(expr \"$rev_num\" - \"$num1\")"

  sh "echo $rev_num"
  sh "echo $api_name"
  sh "echo $org_name"
  sh "echo $env_name"
  sh "echo $pre_rev"

 }
}

cURL cmd выполняется, и в консоли отображается действительный ответ JSON, но после этого я получаю эту ошибку,

[Pipeline] sh
[curlpip] Running shell script
++ jq -r '.environment[0].revision[0].name'
+ rev_num=null
[Pipeline] sh
[curlpip] Running shell script
++ jq -r '.environment[0].name'
+ env_name=null
[Pipeline] sh
[curlpip] Running shell script
++ jq -r .name
+ api_name=null
[Pipeline] sh
[curlpip] Running shell script
++ jq -r .organization
+ org_name=null
[Pipeline] sh
[curlpip] Running shell script
+ declare -r num1=1
[Pipeline] sh
[curlpip] Running shell script
++ expr null - null
expr: non-integer argument
+ pre_rev=
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 2
Finished: FAILURE

Любая помощь приветствуется.

...