如何从TeamCity中以XML形式检索构建状态

4
我需要以XML格式检索TeamCity的构建状态,最好是RSS格式。
我熟悉TeamCity中的RSS订阅,但那对我没有用处,因为它更像是一个历史记录视图。我正在寻找类似于状态小部件生成的页面,但以XML形式。(FYI,状态小部件页面不是XHTML - 我试过了!)
我想知道是否有人遇到过任何可以帮助我的东西?
祝好, David Christiansen
6个回答

2

我已经花了一些时间来解决这个问题。

这篇文章向您展示如何在c#代码中登录到teamcity

然后只需要使用HTMLAgilityPack查看表格即可。

如果您开启了访客访问权限,那么它甚至更容易。如果您正在使用其他语言进行开发,我也可以提供帮助。


2
您可以在“我的设置和工具”下使用“Syndication Feed”工具生成一个RSS URL(文档在这里),并跟踪变更与构建结果以确定状态(即正在构建,以及之前成功/失败的情况)。
例如,我刚刚创建了此URL以查看最近的5个构建结果:
http://teamcity:8111/feed.html?buildTypeId=bt2&itemsType=builds&itemsCount=5

位置:

  • buildTypeId 是配置的 ID(通过检查构建的 URL 获取)
  • itemsType 可以是“builds”、“changes”或两者都可以

您可以使用“changes”类型来确定构建是否正在进行中...

有关 TeamCity RSS 的其他 URL 选项在此处,例如buildStatussinceDate

注意:根据您是否启用了访客访问,您可能需要使用不同的上下文,例如/httpAuth/feed.html/guestAuth/feed.html


1

编辑:正如您所指出的,TeamCity的RSS源仅包括已完成的构建。

一种可能性是从您感兴趣的项目的详细信息页面中获取HTML,然后从那里的构建表格中的顶部条目中提取当前状态。

另一个选择:您考虑过使用Jabber或电子邮件通知系统吗?它具有更精细的事件通知:

  • 构建开始
  • 构建成功或失败

两者都会生成通知,您可以从中推断出构建状态。围绕电子邮件的自动化很简单,而Jabber是一种开放标准,因此我想这也相当容易。

这些选项中的任何一个都需要一些包装代码来转换为RSS。


谢谢您的回复,然而“我的设置和工具”中的RSS选项显示的是历史信息,而不是我正在寻找的“当前构建状态”。 - David Christiansen

1

如果您熟悉Java,编写自己的插件可能更好。您可以创建自定义Web控制器并将其绑定到所需的URL上,该控制器可以接受buildId参数,搜索构建(SBuildServer.findBuildInstanceById())并输出XML。

请查看TeamCity(TeamCity/devPackage)中捆绑的samplePlugin.zip中的HelloUserController.java。

此外,值得检查一些TeamCity插件的源代码:http://www.jetbrains.net/confluence/display/TW/TeamCity+Plugins


0

第一个链接对我来说是可以工作的。第二个链接是一个示例,展示状态链接的形式。它不应该起作用。(以example.com结尾的URL始终是示例。只需访问其中一个,例如http://example.com,以获取进一步解释。) - Douglas Squirrel

0

我使用每个构建类型的API完成了它:

curl -k "https://${SERVER}/guestAuth/app/rest/buildTypes/${BUILDTYPE}/builds/?locator=lookupLimit:1"|xpath -q -e //build/@status

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接