Jenkins REST API 返回 400 未提交任何内容



我尝试使用 cURL 通过其 API 启动 Jenkins 构建:

#!/usr/bin/env bash
curl 
-i 
--fail 
--show-error 
-s 
-X POST 
-H 'Content-Type:application/json' 
-H 'Accept:application/json' 
--form json='{"parameter": [{"name":"COMPOSE_FULL_NAME", "value": "/redacted/docker-compose-prod.yml"}, {"name":"BRANCH", "value": "prod"}, {"name":"AD_USER", "value": "redacted"}, {"name":"AD_PASSWORD", "value": "redacted"}}]}' 
-u redactedUser:redactedToken 
-k 
https://jenkins-dck.redacted/job/elr-156344/job/stack_deploy/build 

这就是我得到的:

curl: (22) The requested URL returned error: 400 Nothing is submitted

我尝试了几种传递 POST 数据的方法,例如使用-d--data-urlencode 'json={但到目前为止没有成功。

知道发生了什么吗? 该消息没有说太多,我无法访问 Jenkins 后端的日志。

好的,找到了,你首先需要忽略这里的文档:https://wiki.jenkins.io/display/JENKINS/Remote+access+API。正确的方法在 https://wiki.jenkins.io/display/JENKINS/Parameterized+Build

使用此 API 终结点:

https://jenkins-dck.redacted/job/elr-156344/job/stack_deploy/buildWithParameters?param1=urlencode&param2=urlencoded

不要忘记在 CURL 引用中引用 url,因为 bash 会弄乱 & 符号。

工作示例:

#!/usr/bin/env bash
curl 
-i 
--fail 
--show-error 
-s 
-X POST 
-H 'Content-Type:application/json' 
-H 'Accept:application/json' 
-u redactedUser:redactedToken 
-k 
"https://jenkins-dck.redacted/job/elr-156344/job/stack_deploy/buildWithParameters?BRANCH=prod&AD_USER=$SERVICE_ACCOUNT"

相关内容

最新更新