跟踪建立与TeamCity的REST API进度(Tracking build progress w

2019-06-27 02:02发布

我使用的TeamCity(7.0)REST API,允许开发人员触发自定义版本。 我构建添加到这样的队列:

HTTP://teamcity/httpAuth/action.html add2Queue = [buildTypeId]名称= [PROPNAME]值= [propValue]

我的问题是如何最好能够跟踪只是触发生成的进度。 该REST调用不返回有关分配到构建版本ID任何信息,所以即使我查询生成的列表(运行/已完成)我不知道,如果他们中的一个是我引发了一个。 有可能是几个建立在队列中的相同buildTypeId,所以我需要一种方法来分离出一个我之后。

我读的地方,你可以有一个独特的价值添加构建属性来打造每一个你把队列,再后来查询生成清单,并找出一个与精确的属性值的建议。 我还没有但发现上市的属性,这些版本的一种方式,所以我还是坚持。 此REST调用不提供有关属性的信息:

HTTP://的TeamCity / httpAuth /应用程序/静止/建立/定位器= buildType:[buildTypeId]

任何建议如何解决这个问题? 我非常想知道,如果构建在队列中,如果它正在运行,并且当它这样做,我想获得的状态。 最重要的是然而,知道它是做什么的状态了。

Answer 1:

经过一番深入调查,我想出了一个解决方案,这似乎很好地工作:

我发现,即使你没有得到有关自定义生成使用性质的任何信息“/建立/定位器= buildType:X”通话,则可以提取的每一个生成ID建立在该列表中,然后做另一个REST调用,以获取有关一个特定的构建更多的细节。 其余的调用如下:

http://teamcity/httpAuth/app/rest/builds/id:{0}

从这一呼吁的回应会给你一个“构建物体”,其中包含构建属性的列表,等等。

我跟踪构建过程的解决方案当时是这样的:

当构建添加到队列TeamCity的,我第一次一个属性添加到名为“BuildIdentifier”的URL。 该值只是一个GUID。 我通过这个识别码返回到客户端应用程序,然后在客户端开始轮询服务器,要求构建的状态与此特定标识。 然后,服务器通过一些步骤来识别版本的目前阶段云:

1:检查构建运行。 我得到的运行列表中建立与呼叫“/构建定位器=运行:?真”,遍历该版本并使用版本ID来查询详细的REST API。 然后我经过每一个运行的构建寻找与匹配的“BuildIdentifier”属性,我从客户端接收的一个构建的细节。 如果在运行一个匹配构建我送与构建在百分之x运行的消息(构建物体的PercentageComplete性等)谁在跟踪进展客户端的响应。 如果没有找到匹配我移动到第2步。

2:检查是否完成:首先获得使用“/建立/定位器= buildType?:X”的最新版本列表调用。 然后做同样的事情,在步骤1中,并提取X最新从列表中(我选5)建立。 为了限制REST调用的次数我设置一个假设,即构建将在最近5建立,如果它结束了。 然后,我找的BuildIdentifier一根火柴,如果我得到一个我回到编译(失败,成功,等等)的状态。

3:如果没有匹配的BuildIdentifier在步骤1或2 I可以假设构建是在队列中,所以返回作为当前状态。

在客户端,我只要每x秒轮询状态服务器的状态是说,构建无论是在队列中,或运行。

希望如果有其他人同样的问题在那里该解决方案可帮助! 我认为,跟踪触发生成的进度是一个很常见的任务,如果你使用的TeamCity REST API。



Answer 2:

在排队构建 REST API是实现这一目标的最佳方式,但由于8.1版本才可用。

  • 要启动构建发送POST请求到~/httpAuth/app/rest/buildQueue这样

     { buildType: { id: "bt667" }, branchName: "master", properties: { property: [ { "name": "Property", "value": "test" } ] } } 
  • 该响应包含可用于检查构建的状态A HREF。

     { ... "href": "/httpAuth/app/rest/buildQueue/taskId:49337", ... } 
  • 要检查构建的状态排队发送一个GET请求到在步骤1中的响应指定的HREF。

这是对以前的API一个巨大的进步。



Answer 3:

自从TeamCity的8.1,REST API得到一个专用的方式来触发一个构建和跟踪排队的生成结果是作为构建队列请求返回的链接排队构建稍后可用于跟踪构建的当前状态容易得多。 查看详细TeamCity的文档 。



文章来源: Tracking build progress with TeamCity REST API