Atlassian Bitbucket v5.11.1
Я имею в виду официальную документацию .
Я использую плагин Jenkins httpRequest в конвейере,Обратите внимание, что поле 'description', принятое REST API, является строкой, которую я принимаю в качестве аргумента.
def jsonBody = """
{
"state": "${buildState}",
"key": "${displayName}",
"name": "${displayName}",
"url": "${buildURL}",
"description": "${displayMessage}"
}
"""
def parametersForHttpRequest = [url: 'https://git.net/rest/build-status/1.0/commits/' + gitCommit,
ignoreSslErrors: true,
acceptType: 'APPLICATION_JSON',
authentication: 'stash-api-credentials',
httpMode: 'POST',
contentType: 'APPLICATION_JSON',
requestBody: jsonBody,
validResponseCodes: '100:599']
Если 'displayMessage' например:
'Build16 завершено в 20190218-1422
или
'Сервер исключений возвратил код ответа HTTP: 415 для URL: https://lx649'
статус сборки обновляется соответствующим образом, но если «displayMessage» выглядит примерно так:
«TDE_component_Current_Release» TDE_DAP_REST_Payment_Payment »проект / интеграция # 17 завершена с состоянием FAILURE (распространять: от ложного до игнорируемого) '
ответ 400:
Response Code: HTTP/1.1 400
Success code from [100‥599]
Моя немедленная реакция заключалась в том, чтобы использовать URLEncoder для displayMessage, но в этом случае в браузере сообщение о состоянии сборки выглядит ужасно, например:
Исключение + TDE_component_Current_Release +% C2% BB + TDE_DAP_REST_Payment_Payment +% C2% BB + проект% 2Fintegration +% 2327 + выполнено + со статусом + FAILURE +% 28propropate% 3A + false + to + ignore% 29+ в + сборка + 12