API REST состояния сборки, выбрасывающий 400 для поля «описание» - PullRequest
0 голосов
/ 15 мая 2019

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

...