Дженкинс остальные API возвращается 400 ничего не представлено - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь запустить сборку Jenkins через ее API, используя cURL:

#!/usr/bin/env bash
curl \
    -i \
    --fail \
    --show-error \
    -s \
    -X POST \
    -H 'Content-Type:application/json' \
    -H 'Accept:application/json' \
    --form json='{"parameter": [{"name":"COMPOSE_FULL_NAME", "value": "/redacted/docker-compose-prod.yml"}, {"name":"BRANCH", "value": "prod"}, {"name":"AD_USER", "value": "redacted"}, {"name":"AD_PASSWORD", "value": "redacted"}}]}' \
    -u redactedUser:redactedToken \
    -k \
    https://jenkins-dck.redacted/job/elr-156344/job/stack_deploy/build \

и вот что я получаю:

curl: (22) The requested URL returned error: 400 Nothing is submitted

Я пробовал несколько способов передачи данных POST, например, используя -d или --data-urlencode 'json={, но пока безуспешно.

Есть идеи, что происходит? сообщение не говорит много, и я не могу получить доступ к журналам сервера jenkins.

1 Ответ

0 голосов
/ 30 августа 2018

ок, нашел, сначала нужно игнорировать документы здесь: https://wiki.jenkins.io/display/JENKINS/Remote+access+API. Правильный метод описан в https://wiki.jenkins.io/display/JENKINS/Parameterized+Build

использовать эту конечную точку API:

https://jenkins -dck.docker-prod.fr.world.socgen / Работа / ELR-156344 / Работа / stack_deploy / buildWithParameters ? Param1 = UrlEncode & param2 = urlencoded

Не забудьте указать URL в цитате CURL, так как bash будет связываться с символами &.

рабочий пример:

#!/usr/bin/env bash
curl \
    -i \
    --fail \
    --show-error \
    -s \
    -X POST \
    -H 'Content-Type:application/json' \
    -H 'Accept:application/json' \
    -u redactedUser:redactedToken \
    -k \
    "https://jenkins-dck.redacted/job/elr-156344/job/stack_deploy/buildWithParameters?BRANCH=prod&AD_USER=$SERVICE_ACCOUNT"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...