Groovy многострочный сценарий оболочки в шаге Jenkins sh не возвращает стандартный вывод - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь сохранить выходные данные скрипта groovy в переменной.

test = sh(returnStdout: true, script: "#!/bin/bash -l && export VAULT_ADDR=http://ourVault.de:8100 && export VAULT_SKIP_VERIFY=true && vault auth ${VAULT_TOKEN} && vault read -field=value test/${RELEASE2}/ID").trim()

Но нет выхода, и мне интересно, почему он не захватывает вывод?

Если я сделаю это:

def test = ""
sh"""#!/bin/bash -l
     export VAULT_ADDR=http://ourVault.de:8100
     export VAULT_SKIP_VERIFY=true
     vault auth ${VAULT_TOKEN}
     ${test}=\"\$(vault read -field=value emea/test/hockey/ios/${RELEASE2}/appID)\"
  """

Я вижу вывод в консоли. Тем не менее, он также не захватывается. Есть ли другой способ захвата вывода многострочного скрипта sh?

1 Ответ

0 голосов
/ 20 ноября 2018

Синтаксис ${} не работает таким образом. Может использоваться только для добавления содержимого в строку.

Параметр returnStdout также можно использовать со сценариями с тройными кавычками. Таким образом, вы, вероятно, хотите сделать следующее:

def test = sh returnStdout:true, script: """
    #!/bin/bash -l
    export VAULT_ADDR=http://ourVault.de:8100 
    export VAULT_SKIP_VERIFY=true
    vault auth ${VAULT_TOKEN}
    echo "\$(vault read -field=value emea/test/hockey/ios/${RELEASE2}/appID)" """
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...