通过curl POST将参数传递给jenkins作业不起作用?

问题描述 投票:0回答:7

我尝试启动

curl -X POST -u "user:pass" -H Jenkins-Crumb:thecrumbnumber http://myjenkinsserver/jenkins/job/testjob/buildWithParameters?=PARAMETER=somenumber

它通过触发参数化构建来工作,但问题是没有值传递给构建(奇怪的是,即使在作业中设置了令牌,我也可以在没有它的情况下触发作业)。在 jenkins 中,该作业有一个配置的字符串“PARAMETER”,带有或不带有默认值,但从未传递来自curl启动的参数。我可能缺少什么?

curl post jenkins parameterized
7个回答
26
投票

我正在使用:

curl -X POST -u "user" "http://myjenkins/path/to/my/job/buildWithParameters?GERRIT_REFNAME=feature/retry&goal=package"

在这里,它就像魅力一样发挥作用。

请注意您粘贴的 URL 中“PARAMETER”前面的“=”。


14
投票

使用curl表单参数

-F param1=value1
)解决了问题:

# parameters need to be passed via: -F param1=value1 -F param2=value2 ...
curl -X POST http://myJenkins/job/testjob/buildWithParameters?token=<myToken> -F param1=value1

我遇到了同样的问题,但上述方法都没有帮助。当我通过 url 参数 传递参数时,作业会被触发,但 url 参数不会传播

# job is triggered but parameters are not propagated
curl -X POST http://myJenkins/job/testjob/buildWithParameters?token=<myToken>&param1=value1

4
投票

请尝试以下操作:

curl -X POST http://<jenkins URL>/jenkins/job/TESTS/job/<Your job's Name>/buildWithParameters \
  --user <Jenkins account>:<account's TokenID>  \
  --data token=<job's token (if required)> \
  --data parameter=some_value
  ...
  --data MessageTextParameter=My%20Text

3
投票

我使用下面的命令来传递多个参数。

curl -X POST "https://myjenkins.com/job/jobname/buildWithParameters?token=developer&name=abc&userid=CFDH123&[email protected]"

注意:参数名称区分大小写。


1
投票

在调用 Jenkins url 将参数作为 JSON 有效负载调用时,Jenkins Confluence 页面中似乎存在拼写错误。 https://wiki.jenkins.io/display/JENKINS/Remote+access+API 尝试使用 url 后缀作为构建buildWithParameters 的并且它正在工作..

curl -X POST -u "user:token/password" "http://myjenkins/path/to/my/job/build --data-urlencode json='{"parameter": [{"name":"GERRIT_REFNAME", "value":"feature/retry"},{"name":"goal", "value":"package"}]}'

0
投票

我发现这非常令人困惑和不一致,尤其是当想要在主体中传递参数时。以下是我发现的使用参数构建的最佳方法(传递一些参数并使用指定的默认值)。

curl -X POST -u "user:pass" \
http://myjenkinsserver/jenkins/job/testjob/buildWithParameters \
-F PARAMETER=somenumber 

我还尝试了以下方法并提及它们,因为它们出现在各种文档中,但似乎无法正常工作/如描述的那样。

下面提交一个构建(build vs buildWithParameters URL)并传递参数,但不使用任何其他默认参数。

curl -X POST -u "user:pass" \
http://myjenkinsserver/jenkins/job/testjob/build \
--data-urlencode json='{"parameter": [{"name":"PARAMETER", "value":"somenumber"}]}'

下面看起来应该可以工作,但我发现参数没有正确传递。

curl -X POST -u "user:pass" \
http://myjenkinsserver/jenkins/job/testjob/build \
--data-urlencode json='{"parameter": [{"name":"PARAMETER", "value":"somenumber"}]}'

0
投票

以下两种格式都适合我。

curl -X POST http://hostname:8080/job/first_pipeline/build  --user  siebelcrm:xxxxxx --data-urlencode json='{"parameter": [{"name":"Greetings", "value":"New123"}]} ' -H  "Jenkins-Crumb:xxxxx"

curl -X POST http://hostname:8080/job/first_pipeline/buildWithParameters?Greetings=New1  --user  Admin:xxxxx --data-urlencode json=' ' -H  "Jenkins-Crumb:xxxxx"
© www.soinside.com 2019 - 2024. All rights reserved.