Я пытаюсь отправить переменную json ({{parameter_var}}) в задание Jenkins из Ansible, используя вызов curl. Вот задача, которую я использую:
- name: Call Jenkins Job
shell: curl -H "crumb:{{ response.json.crumb }}" '{{ jenkinshost }}/job/{{ jenkinsjob }}/buildWithParameters?token={{ jenkinstoken }}' --data-urlencode json='{"parameter": [{"name":"parameter", "value":\""{{ parameter_var }}"\"}]}'
Ошибка, которую я получаю:
Syntax Error while loading YAML.\n mapping values are not allowed in this context
Ansible говорит, что проблема:
YAML thought it was looking for the start of a\nhash/dictionary and was confused to see a second "{".
Кажется, что вместо того, чтобы принимать {{parameter_var}} в качестве переменной, он пытается прочитать его как просто значение "{{parameter_var}}". Я попробовал несколько способов добавления или экранирования кавычек, но не могу понять, что ищет Ansible / YAML. Я просто неправильно добавляю свои кавычки или я просто не могу отправить переменную этим методом?
Я распечатал свой {{parameter_var}}. В этом нет ничего необычного, поэтому я не думаю, что это проблема:
{
"msg": {
"msg": "All items completed",
"changed": false,
"results": [
{
"content_length": "142",
...
} ...
}
Цель, которую я пытаюсь достичь sh, - установить параметр "parameter" в Jenkins на значение { {parameter_var}}
Вот где я нашел синтаксис для отправки json Дженкинсу: https://wiki.jenkins.io/display/JENKINS/Remote+access+API