如何 POST 使用 Curl 来配置提交 Jenkins 页面

How to POST with Curl to configSubmit Jenkins page

我可以使用 Python 但不能使用 Curl...

$ curl -H "Content-Type: application/json; charset=UTF-8" --data-urlencode   \
   '{ "description": "This is a test job.", "displayName": "#30: Success" }' \
   -n http://localhost/job/playground/30/configSubmit


<body><h2>HTTP ERROR 400</h2>
<p>Problem accessing /job/playground/30/configSubmit. Reason:
<pre>    Nothing is submitted</pre></p><hr><i><small>Powered by Jetty://</small></i><hr/>

我为此苦苦挣扎了几个小时。最终,this answer to a similar question 让我摆脱了困境。

Jenkins 似乎需要具有名为 json 的字段的表单数据。最终对我有用的 curl 命令是

curl -X POST -F 'json={"displayName":"name","description":"a short description"}' \
  http://localhost/job/playground/30/configSubmit

@Pete 的回答是正确的,但是足够了 运行:

curl -F 'json={"displayName":"name","description":"a short description"}' \ http://localhost/job/playground/30/configSubmit

更多解释:

  • curl 中的 -F 选项用于 post 表单,因此 -X POST 没有必要。
  • 需要
  • json= 等同于设置 Content-Type: application/json.
  • --data-urlencode(如问题中所用)在使用时会覆盖 -F - 因此不能在此处使用。

@ebeezer 问题来自尝试仅设置“描述”,而必须同时设置“描述”和“显示名称”才能使请求成功。