使用 python 请求创建新的 Jenkins 作业

Kos*_*ris 0 python jenkins python-requests

我成功地使用了这个:

curl -X POST -H "Content-Type:application/xml" -d "<project><builders/><publishers/><buildWrappers/></project>" "http://USER:PASSWORD@JENKINS_HOST/createItem?name=NEW_JOB_NAME"
Run Code Online (Sandbox Code Playgroud)

我将其转换为以下 python 代码:

url     = "http://USER:PASS@HOST/createItem"
payload = { 'name' : 'NEW_JOB_NAME' }
headers = {"Content-Type:application/xml"}
r = requests.post(url, data=payload, headers=headers)
Run Code Online (Sandbox Code Playgroud)

我应该把"<project><builders/><publishers/><buildWrappers/></project>"零件放在哪里?

che*_*rtz 5

您需要将 GET 参数与 URI 的其余部分放在一起,而不是尝试将 GET 参数拆分为有效负载。有效负载应由 POST 数据(HTTP 请求的“正文”,-dcURL 的参数)组成。

我还将身份验证提取为请求的首选语法。

url     = 'http://HOST/createItem?name=NEW_JOB_NAME'
auth    = ('USER', 'PASS')
payload = '<project><builders/><publishers/><buildWrappers/></project>'
headers = {"Content-Type": "application/xml"}
r = requests.post(url, data=payload, auth=auth, headers=headers)
Run Code Online (Sandbox Code Playgroud)

要确认结果,您可以添加以下行:

print(r.status_code)
print(r.text)
Run Code Online (Sandbox Code Playgroud)