类似于http://localhost/jenkins/job/job_name/25/api/json
如何使用构建26的详细信息返回JSON
对象,是否有办法在第一次启动作业时获取类似对象,即在您知道构建之前号码是?
我注意到来自构建网址的curl
发布请求的输出返回包含内部版本号的html
;但是,我宁愿不必解析这个问题,而是支持拥有内置编号的JSON
对象。目前,我正在使用:
curl -v --data "param1=value¶m2=value" \
http://localhost/jenkins/job/job_name/buildWithParameters
启动工作正常并输出一堆html
。有没有办法开始这个工作并收到一个带有内部版本号的JSON
对象?
答案 0 :(得分:6)
在所有情况下,nextBuildNumber可能不是正确的内部版本号。如果您触发了同一个Job的两个不同版本,我们不知道哪个版本首先被触发。这里有竞争条件。检查构建队列可能也不会提供正确的内部版本号。
答案 1 :(得分:1)
如果您查询http://localhost/jenkins/job/job_name/api/json
,您可以随时获取nextBuildNumber
字段,以便为您提供下一个内部版本号。
当你触发构建时,你可以放心,构建将获得这个数字。
答案 2 :(得分:1)
一旦触发了构建,您就可以从以下位置获取其URL:
http://localhost/jenkins/job/job_name/api/json?tree=lastBuild[url]
如果有的话,这将返回正在运行的构建,否则返回最新完成的构建。然后,您可以将“/ api / json”添加到该URL以获取构建的JSON对象。
答案 3 :(得分:0)
在我的场景中,我需要一个JSONP数据类型来完成。我所做的是从Jenkins那里得到我特定工作的原始对象,这样我就可以根据需要进行操作。
请求:
$.ajax({
url: "http://<jenkins server>/job/<job name>/api/json?jsonp=?",
dataType: 'jsonp',
success: success
});
成功电话:
var success = function(json) {
console.log('Raw JSON object for this job:');
console.log(json);
}
然后,获取您需要的信息,例如:
console.log(json.lastCompletedBuild.number);
console.log(json.lastBuild.url);