Jenkins远程API - 使用静态下拉参数触发作业

时间:2014-05-14 15:16:07

标签: json curl jenkins

我试图通过具有所需参数的curl远程触发Jenkins构建。这些参数采用静态下拉的形式。

我能够通过curl远程触发构建,但是参数没有被传递 - 看起来它只是从每次下拉中取出第一个(默认值)。

这是curl命令:

export json="{\"parameter\": [{\"name\": \"ENV\", \"value\": \"dev-1\"},{\"name\": \"PLATFORM\", \"value\": \"desktop\"},{\"name\": \"PRODUCT\", \"value\": \"Test\"}]}"

curl -H ".crumb:xxxxxxxxxxxxxxxxxxxxxx" -X POST http://server:8080/job/job_name/buildWithParameters -d token=tokenId --data-urlencode json="$json"

据我所知,JSON是有效的 - 静态下拉列表是否需要一组不同的元素?

谢谢!

2 个答案:

答案 0 :(得分:3)

使用http://server:8080/job/job_name/build代替buildWithParameters,如使用remote access api的示例所示。

我不确定区别的原因是什么,一开始对我来说有点混乱,但是当使用buildWithParameters时,您需要将参数添加到网址中,因为您发现了wget命令 - 同时您还可以在使用普通build触发器时添加参数。

请注意,当您以这种方式触发构建时,如果省略一些参数,它仍然可以工作,但对于那些参数,将不使用默认值(它们将是未指定的)。

答案 1 :(得分:2)

我使用wget而不是curl来使用它,但我仍然有兴趣知道如果有人有指针如何使用curl工作。

此命令有效:

wget --delete-after --auth-no-challenge --http-user=${userID} --http-password=${authToken} http://server:8080/job/job_name/buildWithParameters?token=runme\&ENV='dev-1'\&PLATFORM='desktop'\&PRODUCT='Test'