【发布时间】:2014-11-06 18:42:27
【问题描述】:
我需要以 XML 的形式从 TeamCity 中检索构建状态,RSS 格式会比较理想。
我熟悉 Teamcity 中的 RSS 提要,但这并没有什么用,因为它更像是一个历史视图。我正在寻找更像是由状态小部件生成的页面但采用 XML 形式的东西。 (仅供参考,状态小部件页面不是 XHTML - 试过了!)
我想知道是否有人有任何可以提供帮助的东西?
亲切的问候, 大卫克里斯蒂安森
【问题讨论】:
我需要以 XML 的形式从 TeamCity 中检索构建状态,RSS 格式会比较理想。
我熟悉 Teamcity 中的 RSS 提要,但这并没有什么用,因为它更像是一个历史视图。我正在寻找更像是由状态小部件生成的页面但采用 XML 形式的东西。 (仅供参考,状态小部件页面不是 XHTML - 试过了!)
我想知道是否有人有任何可以提供帮助的东西?
亲切的问候, 大卫克里斯蒂安森
【问题讨论】:
您可以使用My Settings And Tools 下的Syndication Feed 工具生成一个RSS URL(文档here),并跟踪更改与构建结果以确定状态(即构建和之前成功/失败)
例如,我刚刚创建了这个 URL 来查看最近 5 个构建结果:
http://teamcity:8111/feed.html?buildTypeId=bt2&itemsType=builds&itemsCount=5
地点:
buildTypeId 是配置的 ID(通过检查构建的 URL 获取)itemsType 可以是“构建”或“更改”或两者兼而有之您可以使用“更改”类型来确定当前是否正在进行构建...
TeamCity RSS here 还有其他 URL 选项,例如 buildStatus 和 sinceDate。
注意:根据您是否启用访客访问,您可能需要使用不同的上下文,例如/httpAuth/feed.html 或/guestAuth/feed.html。
【讨论】:
我已经研究这个问题一段时间了
Here's a post showing you how to login to teamcity in code in c#
那么它只是使用 HTMLAgilityPack 查看表格的问题。
如果您打开访客访问,它会更容易。如果有帮助,我将尽快清理代码以供发布。如果您使用另一种语言进行开发,我也可以提供帮助。
【讨论】:
编辑:正如您所指出的,TeamCity 的 RSS 提要仅包括已完成的构建。
一种可能性是从您感兴趣的项目的详细信息页面中获取 HTML,然后从那里的构建表的顶部条目中提取当前状态。
另一种选择:您是否考虑过使用 Jabber 或电子邮件通知系统?它有更细粒度的事件通知:
两者都会生成通知,您可以从中推断构建状态。围绕电子邮件的自动化很简单,而且 Jabber 是一个开放标准,所以我想这也相当容易。
这些选项中的任何一个都需要一些包装代码才能转换为 RSS。
【讨论】:
编写自己的插件可能会更好。如果你当然知道 Java。您可以创建自定义 Web 控制器并将其绑定到您喜欢的 url,此控制器可以接受 buildId 参数,搜索构建 (SBuildServer.findBuildInstanceById()) 并输出 XML。
查看与 TeamCity (TeamCity/devPackage) 捆绑在一起的 samplePlugin.zip 中的 HelloUserController.java。
还值得检查一些 TeamCity 插件的来源:http://www.jetbrains.net/confluence/display/TW/TeamCity+Plugins
【讨论】:
this summary of a standard XML status format 是否描述了您的意思?我很确定 TeamCity 可以生成这种格式,但不确定如何生成。 Hudson 使用像 http://my.hudson.server.example.com:3030/cc.xml 这样的 URL。
【讨论】:
我使用每个构建类型的 API 完成了它:
curl -k "https://${SERVER}/guestAuth/app/rest/buildTypes/${BUILDTYPE}/builds/?locator=lookupLimit:1"|xpath -q -e //build/@status
【讨论】: