Jenkins Ansible can';t在curl调用中发送json变量
我试图使用curl调用从Ansible向Jenkins作业发送一个json变量({parameter_var}})。以下是我正在使用的任务:Jenkins Ansible can';t在curl调用中发送json变量,jenkins,curl,ansible,Jenkins,Curl,Ansible,我试图使用curl调用从Ansible向Jenkins作业发送一个json变量({parameter_var}})。以下是我正在使用的任务: - name: Call Jenkins Job shell: curl -H "crumb:{{ response.json.crumb }}" '{{ jenkinshost }}/job/{{ jenkinsjob }}/buildWithParameters?token={{ jenkinstoken }}' --data-urlencode
- 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\u var}}作为变量,而是试图将其作为{{parameter\u var}的值来读取。我尝试了几种添加或转义引号的方法,但似乎不知道Ansible/YAML在寻找什么。我只是添加了错误的引号,还是不能使用此方法发送变量
我打印了我的{{parameter_var}}。没有什么不寻常的,所以我不认为这是问题所在:
{
"msg": {
"msg": "All items completed",
"changed": false,
"results": [
{
"content_length": "142",
...
} ...
}
我试图实现的目标是将Jenkins中的参数“parameter”设置为{{parameter_var}}的值
我在这里找到了将json发送给Jenkins的语法:在您的问题中,有很多问题需要解决:
- 当有专门为此设计的内置应答器时,您不应该向
curl
- 与此相关,您在curl中取消了
,因此非200响应将导致--fail
退出0,这几乎肯定不是您想要的shell:
- 与此相关,您在curl中取消了
- yaml文档中不能有
字符后跟空格,因为yaml就是这样定义dict中的键的:
- 您不应该尝试使用jinja2模板构建JSON,而应该在
或dict
中构建结构,并将其输入以确保正确引用list
-名称:呼叫Jenkins Job
外壳:>-
curl--fail-H“crumb:{{response.json.crumb}”
“{jenkinshost}}/job/{jenkinsjob}}/buildWithParameters?token={{jenkinstoken}}”
--数据urlencode json={{json|U数据|到| json | quote}
变量:
json_数据:
参数:
-名称:“参数”
值:“{parameter_var}}”
在您的问题中有很多问题需要解决:
- 当有专门为此设计的内置应答器时,您不应该向
curl
- 与此相关,您在curl中取消了
,因此非200响应将导致--fail
退出0,这几乎肯定不是您想要的shell:
- 与此相关,您在curl中取消了
- yaml文档中不能有
字符后跟空格,因为yaml就是这样定义dict中的键的:
- 您不应该尝试使用jinja2模板构建JSON,而应该在
或dict
中构建结构,并将其输入以确保正确引用list
-名称:呼叫Jenkins Job
外壳:>-
curl--fail-H“crumb:{{response.json.crumb}”
“{jenkinshost}}/job/{jenkinsjob}}/buildWithParameters?token={{jenkinstoken}}”
--数据urlencode json={{json|U数据|到| json | quote}
变量:
json_数据:
参数:
-名称:“参数”
值:“{parameter_var}}”