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

passing parameter to jenkins job through curl POST not working?

我尝试启动

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

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

我正在使用:

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

在这里,它就像一个魅力。

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

当我尝试时

curl -X POST http://icm.git:faedc992afcd1ea4db3da6809435117a@10.221.31.36:8080/job/1_TODO_Get_Submit_Request_With_Dependency_Test/buildWithParameters?PARAMETER=1494390553639

curl -X POST -u "icm.git:lge123" -H Jenkins-Crumb:faedc992afcd1ea4db3da6809435117a http://10.221.31.36:8080/job/1_TODO_Get_Submit_Request_With_Dependency_Test/buildWithParameters?PARAMETER=1494390553639

两者都触发了 Jenkins Job > 1_TODO_Get_Submit_Request_With_Dependency_Test 但 Jenkins 日志中的参数显示参数 REQUESTID = -1 的默认值。

Jenkins 或 CURL 有什么问题 url?

+ echo '4.2.25(1)-release'
4.2.25(1)-release
+ echo

+ echo 26
26
+ echo '#26'
#26
+ echo 1_TODO_Get_Submit_Request_With_Dependency_Test
1_TODO_Get_Submit_Request_With_Dependency_Test
+ echo 1_TODO_Get_Submit_Request_With_Dependency_Test
1_TODO_Get_Submit_Request_With_Dependency_Test
+ echo REQUESTID = -1
REQUESTID = -1

请尝试类似的操作:

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

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

curl -X POST "https://myjenkins.com/job/jobname/buildWithParameters?token=developer&name=abc&userid=CFDH123&mail=abc@gmail.com"

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

我也在尝试 post 但是下面的 curl 命令,但它没有 post。

curl -X POST -v https://JENKINS_SERVER/job/JOBNAME/buildWithParameters --user foo:8382 --data-urlencode json='{"parameter": [{"name": "registration_action","value": "DNS_only"},{"name": "entries","value": "add, hostname01.local.example.com, 192.168.1.1/24\nremove, hostname01.local.example.com, 192.168.1.1/24/\n" }]}'

它创建作业但不传入变量。不确定,我做错了什么。

在调用 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"}]}'

使用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

我遇到了同样的问题,上面的 none 帮助了我。当我通过 url 参数传递参数时 作业被触发但 url 参数未传播.

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

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

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

我还尝试了以下方法并提及它们,因为它们出现在各种文档中,但似乎没有工作 correctly/as 描述。

下面提交一个构建(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"}]}'

以下两种格式都适合我。

curl -X POST http://hostname:8080/job/first_pipeline/build --user siebelcrm:xxxxxx --data-urlencode json='{"参数" : [{"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"