我试图通过具有所需参数的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是有效的 - 静态下拉列表是否需要一组不同的元素?
谢谢!
答案 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'