4

类似于如何http://localhost/jenkins/job/job_name/25/api/json返回具有JSON构建 26 详细信息的对象,有没有办法在第一次启动作业时获得类似的对象,即在您知道构建号是什么之前?

我注意到从curl发布请求到构建 url 返回的输出html包含构建号;但是,我宁愿不必解析这个,而是有一个JSON带有内部版本号的对象。目前,我正在使用:

curl -v --data "param1=value&param2=value" \
http://localhost/jenkins/job/job_name/buildWithParameters

这可以很好地启动工作并输出一堆html. 有没有办法开始这项工作并接收JSON带有内部版本号的对象?

4

4 回答 4

6

nextBuildNumber 可能并非在所有情况下都是正确的内部版本号。如果您触发了同一个 Job 的两个不同构建,我们不知道哪个最先触发。这里有一个竞争条件。检查构建队列也可能不会给出正确的构建号。

于 2013-03-19T08:42:42.730 回答
2

如果您查询http://localhost/jenkins/job/job_name/api/json,您可以随时获取该nextBuildNumber字段,这将为您提供下一个内部版本号。

当您触发构建时,您可以放心,构建将获得这个数字。

于 2013-01-02T23:41:46.857 回答
1

触发构建后,您可以从以下位置获取其 URL:

http://localhost/jenkins/job/job_name/api/json?tree=lastBuild[url]

如果有,这将返回正在运行的构建,否则将返回最新完成的构建。然后,您可以将“/api/json”添加到该 URL 以获取构建的 JSON 对象。

于 2013-01-02T23:52:13.083 回答
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);
于 2014-11-07T14:25:01.883 回答