我熟悉TeamCity中的RSS订阅,但那对我没有用处,因为它更像是一个历史记录视图。我正在寻找类似于状态小部件生成的页面,但以XML形式。(FYI,状态小部件页面不是XHTML - 我试过了!)
我想知道是否有人遇到过任何可以帮助我的东西?
祝好, David Christiansen
我已经花了一些时间来解决这个问题。
然后只需要使用HTMLAgilityPack查看表格即可。
如果您开启了访客访问权限,那么它甚至更容易。如果您正在使用其他语言进行开发,我也可以提供帮助。
http://teamcity:8111/feed.html?buildTypeId=bt2&itemsType=builds&itemsCount=5
位置:
buildTypeId
是配置的 ID(通过检查构建的 URL 获取)itemsType
可以是“builds”、“changes”或两者都可以您可以使用“changes”类型来确定构建是否正在进行中...
有关 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