curl 相当于 python POST 请求调用 jenkins api



我正在尝试调用 jenkins api 来使用 curl 命令构建一个作业,这完全没问题。这是我的卷曲命令:

curl -X POST https://myjenkinshost/job/myorg/job/10042/job/myproject/job/10042_myansiblejob/build --user admuser:my-token --data-urlencode json='{"parameter": [{"name": "ENVIRONNEMENT", "value": "developpement"},{"name": "REFERENCE_GIT_INVENTAIRE", "value": "develop"},{"name": "REFERENCE_GIT_PLAYBOOK", "value": "develop"},{"name": "VAULT", "value": "mysecretpassword"},{"name": "EXTRA_VARS", "value": "myhosts: TARGET"}]}' 

但是当我用python尝试这样做时,它总是显示HTTP 400:

错误:

原因:HTTP 错误 400。 访问/job/10042/job/myproject/job/10042_myansiblejob/build 时出现问题。未提交任何内容

这是我的python代码,非常简单,可能是一个非常小的问题。

import requests
import json

basicAuthCredentials = ('admuser', 'my-token') 
jenkins_headers={'Content-type':'application/json', 'Accept':'application/json'}
ansible_vault_password="mysecretpassword"
JENKINS_URL="https://myjenkinshost/job/myorg/job/10042/job/myproject/job/10042_myansiblejob/build"
ENVIRONNEMENT="developpement"
GIT_BRANCH="develop"
ANSIBLE_EXTRA_VARS_VARNAME="myhosts: TARGET"
json_payload='{"parameter": [{"name": "ENVIRONNEMENT", "value": "'+ENVIRONNEMENT+'"'+ 
'},{"name": "REFERENCE_GIT_INVENTAIRE", "value": "'+GIT_BRANCH+'"'+ 
'},{"name": "REFERENCE_GIT_PLAYBOOK", "value": "'+GIT_BRANCH+'"'+ 
'},{"name": "VAULT", "value": "'+ansible_vault_password+'"'+ 
'},{"name": "EXTRA_VARS", "value": "'+ANSIBLE_EXTRA_VARS_VARNAME+'"}]}'
json_data=json.dumps(json_payload)
response_jenkins = requests.post(JENKINS_URL, headers=jenkins_headers,                
data=json_data, auth=basicAuthCredentials)
print(response_jenkins.text)

参考: https://www.jenkins.io/doc/book/using/remote-access-api/

任何建议不胜感激。

从 curl 命令中,您正在执行 --data-urlencode,它正在发送Content-Type: application/x-www-form-urlencoded

从你的蟒蛇你正在传递Content-type':'application/json.

最新更新