Как сделать запрос curl с помощью json в Jenkins pipeline groovy script



Я пытаюсь сделать новый вызов API развертывания Relic в качестве шага сборки Jenkins, используя конвейер Groovy. У меня возникли проблемы из-за использования как одинарных, так и двойных кавычек в команде shell ('sh') на groovy script. Всякий раз, когда я выполняю следующее:



node {

//...

def json = '''
{"deployment": {"revision": "v1","user": "me"}}'
'''

sh "curl -o /dev/null -s -X POST 'https://api.newrelic.com/v2/applications/[redacted]/deployments.json'
-H 'X-Api-Key:[redacted]'
-H 'Content-Type: application/json'
-d '${json}'"

// ...
}


Я получаю ошибку в Дженкинсе, которая говорит:



/ВАР/Либ/Дженкинс/рабочих мест/[отредактированный]/workspace@tmp/durable-0f6c52ef/script.sh: линия 2: неожиданный конец файла при поиске соответствия `'

669   1  

1 ответ:

Переменная 'json' содержит строку, которая имеет дополнительную заключительную одинарную кавычку (').

Когда это используется в -д '${JSON с}'" Я подозреваю, что это приведет к дополнительному ( ' ) в блоке данных. Блок данных потребует, чтобы JSON был заключен в одинарные кавычки, поэтому убедитесь, что они включены.

Не будучи заводным человеком (каламбур), вам, возможно, придется играть с экранирующими символами, чтобы убедиться, что правильная строка передается команде cURL.

Comments

    Ничего не найдено.