我需要以 XML 的形式从 TeamCity 检索构建状态,RSS 格式将是理想的。
我熟悉 Teamcity 中的 RSS 提要,但这没有用,因为它更像是一个历史视图。我正在寻找更像是由状态小部件生成的页面,但采用 XML 形式。(仅供参考,状态小部件页面不是 XHTML - 试过了!)
我想知道是否有人有任何可以提供帮助的东西?
亲切的问候,大卫克里斯蒂安森
我一直在研究这个问题一段时间
这是一篇文章,向您展示如何在 c# 中使用代码登录到 teamcity
那么它只是使用 HTMLAgilityPack 查看表格的问题。
如果您打开访客访问,它会更容易。如果有帮助,我将尽快清理代码以供发布。如果您使用另一种语言进行开发,我也可以提供帮助。
您可以使用Syndication Feed
下面的工具My Settings And Tools
生成 RSS URL(此处的文档),并跟踪更改与构建结果以确定状态(即构建和之前成功/失败)
例如,我刚刚创建了这个 URL 来查看最后 5 个构建结果:
http://teamcity:8111/feed.html?buildTypeId=bt2&itemsType=builds&itemsCount=5
在哪里:
buildTypeId
是配置的 ID(通过检查构建的 URL 来获取)itemsType
可能是“构建”或“更改”或两者兼而有之您可以使用“更改”类型来确定当前是否正在进行构建...
这里有 TeamCity RSS 的其他 URL 选项,例如buildStatus
和sinceDate
。
注意:根据您是否启用了访客访问,您可能需要使用不同的上下文,例如/httpAuth/feed.html
或/guestAuth/feed.html
。
编辑:正如您所指出的,来自 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
这个标准 XML 状态格式的摘要是否描述了您的意思?我很确定 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