Как передать json body команде curl из конвейера jenkins в groovy - PullRequest
0 голосов
/ 03 марта 2020

Кажется невозможным передать строку, представляющую json тело для POST-запроса, с помощью curl, используя команду sh внутри Jenkins Pipeline.

У меня есть следующее sh строка внутри шага конвейера:

def apiCmd = 'curl -X POST --user user:passe --data  \\"{\\"state\\":\\"' + stateStr + '\\",\\"context\\":\\"branch-regression\\"}\\"' + " --url ${Configuration.CommitStatusUpdateURL}

Теперь Дженкинс на самом деле выполняет:

curl -X POST --user user:pass--data '""state":"failure""' '""context":"branch-regression""' --url someurl

Что раздражает, так это то, что если вы хотите запустить сообщение запросить нативные groovy жалобы Дженкинса о мерах безопасности ... и если вы попробуете с Curl, то JSON не проанализирован

1 Ответ

0 голосов
/ 03 марта 2020

Попробуйте:

def curlOut = sh script: """curl -X POST --user user:passe --data '{"state":"${stateStr}", "context": "branch-regression"}' --url ${Configuration.CommitStatusUpdateURL} """, returnOutput: true

В будущем вы можете go на консоли сценариев Jenkins (на your.jenkins.url/script) и запустить, например, следующее:

def stateStr = "OK"
def Configuration_CommitStatusUpdateURL = "https://www.x.com/"
println """curl -X POST --user user:passe --data '{"state":"${stateStr}", "context": "branch-regression"}' --url ${Configuration_CommitStatusUpdateURL} """ 

Результат :

curl -X POST --user user:passe --data '{"state":"OK", "context": "branch-regression"}' --url https://www.x.com/
...