使用 Team CIty 的 rest API 在构建数组中提取每个构建的更多信息
Using Team CIty's rest API to pull more information per build in a builds array
如标题中所述,我正在使用 Knockout JS、HTML 和 CSS 为 Teamcity 服务器上的构建创建监视器。
在我遇到显示每种类型的最新版本(部署、selenium 测试和编译)的面板出现问题之前,一切进展顺利
问题是我正在使用的 Team city API url 检索有关每个构建的信息列表,包括状态、名称、描述和类型,但没有提供给我一个 "Triggered" 变量。
我目前使用的APIurl如下:
Settings.buildsUrl = Settings.proxy + Settings.teamCityUrl + '/guestAuth/app/rest/builds?locator=running:any,branch:branched:any,count:20';
在我的 HTML 中,我有以下 foreach 用于显示最新版本的主面板,但由于 TeamCity 的 XML 中没有 'triggered' ,我无法显示谁触发了当前构建。
<div class="dev-panel-history">
<ul data-bind="foreach: { data: mostRecentDevs }">
<li data-bind="attr: { class: lowerStatus() }, css: { running: isRunning() }">
<div class="build-branch" data-bind="text: description()"></div>
<div class="build-type" data-bind="text: buildType"></div>
<div class="clear"></div>
<div class="build-status" data-bind="text: isRunning() ? '' : status"></div>
<div class="clear"></div>
<!-- ko if: hasProgress() -->
<div class="progress-container" data-bind="attr: { 'data-progress' : percentageComplete() }"></div>
<!-- /ko -->
</li>
</ul>
</div>
您不需要为每个构建进行额外的调用,但您需要设计您想要的响应方式 returned。有一个名为 fields 的查询字符串参数,可让您定义要带回的内容。
例如对于 return 原始调用中的触发数据,您可以将 &fields=build(triggered) 添加到原始请求
teamCityUrl + '/guestAuth/app/rest/builds?locator=running:any,branch:branched:any,count:20&fields=build(triggered)';
这会 return 像这样
<builds>
<build>
<triggered type="user" date="20160314T130743+0000">
<user/>
</triggered>
</build>
<build>
<triggered type="vcs" details="jetbrains.git" date="20160221T230257+0000"/>
</build>
</builds>
需要注意的是,您现在必须专门定义您想要的内容 returned。所以要 return 所有其他字段和触发器数据,将此参数添加到查询字符串
&fields=build(id,buildTypeId,number,status,state,branchName,defaultBranch,href,webUrl,buildTypeId,triggered)
TeamCity 文档 - Full and Partial responses
希望对您有所帮助
如标题中所述,我正在使用 Knockout JS、HTML 和 CSS 为 Teamcity 服务器上的构建创建监视器。
在我遇到显示每种类型的最新版本(部署、selenium 测试和编译)的面板出现问题之前,一切进展顺利
问题是我正在使用的 Team city API url 检索有关每个构建的信息列表,包括状态、名称、描述和类型,但没有提供给我一个 "Triggered" 变量。
我目前使用的APIurl如下:
Settings.buildsUrl = Settings.proxy + Settings.teamCityUrl + '/guestAuth/app/rest/builds?locator=running:any,branch:branched:any,count:20';
在我的 HTML 中,我有以下 foreach 用于显示最新版本的主面板,但由于 TeamCity 的 XML 中没有 'triggered' ,我无法显示谁触发了当前构建。
<div class="dev-panel-history">
<ul data-bind="foreach: { data: mostRecentDevs }">
<li data-bind="attr: { class: lowerStatus() }, css: { running: isRunning() }">
<div class="build-branch" data-bind="text: description()"></div>
<div class="build-type" data-bind="text: buildType"></div>
<div class="clear"></div>
<div class="build-status" data-bind="text: isRunning() ? '' : status"></div>
<div class="clear"></div>
<!-- ko if: hasProgress() -->
<div class="progress-container" data-bind="attr: { 'data-progress' : percentageComplete() }"></div>
<!-- /ko -->
</li>
</ul>
</div>
您不需要为每个构建进行额外的调用,但您需要设计您想要的响应方式 returned。有一个名为 fields 的查询字符串参数,可让您定义要带回的内容。
例如对于 return 原始调用中的触发数据,您可以将 &fields=build(triggered) 添加到原始请求
teamCityUrl + '/guestAuth/app/rest/builds?locator=running:any,branch:branched:any,count:20&fields=build(triggered)';
这会 return 像这样
<builds>
<build>
<triggered type="user" date="20160314T130743+0000">
<user/>
</triggered>
</build>
<build>
<triggered type="vcs" details="jetbrains.git" date="20160221T230257+0000"/>
</build>
</builds>
需要注意的是,您现在必须专门定义您想要的内容 returned。所以要 return 所有其他字段和触发器数据,将此参数添加到查询字符串
&fields=build(id,buildTypeId,number,status,state,branchName,defaultBranch,href,webUrl,buildTypeId,triggered)
TeamCity 文档 - Full and Partial responses
希望对您有所帮助