【问题标题】:How to retrieve Build Status in XML from TeamCity如何从 TeamCity 检索 XML 中的构建状态
【发布时间】:2014-11-06 18:42:27
【问题描述】:

我需要以 XML 的形式从 TeamCity 中检索构建状态,RSS 格式会比较理想。

我熟悉 Teamcity 中的 RSS 提要,但这并没有什么用,因为它更像是一个历史视图。我正在寻找更像是由状态小部件生成的页面但采用 XML 形式的东西。 (仅供参考,状态小部件页面不是 XHTML - 试过了!)

我想知道是否有人有任何可以提供帮助的东西?

亲切的问候, 大卫克里斯蒂安森

【问题讨论】:

    标签: xml rss teamcity


    【解决方案1】:

    您可以使用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 选项,例如 buildStatussinceDate

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

    【讨论】:

      【解决方案2】:

      我已经研究这个问题一段时间了

      Here's a post showing you how to login to teamcity in code in c#

      那么它只是使用 HTMLAgilityPack 查看表格的问题。

      如果您打开访客访问,它会更容易。如果有帮助,我将尽快清理代码以供发布。如果您使用另一种语言进行开发,我也可以提供帮助。

      【讨论】:

        【解决方案3】:

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

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

        另一种选择:您是否考虑过使用 Jabber 或电子邮件通知系统?它有更细粒度的事件通知:

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

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

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

        【讨论】:

        • 感谢您的回复,但是,“我的设置和工具”中的 RSS 选项显示历史信息 - 而不是我正在寻找的“当前构建状态”。
        【解决方案4】:

        编写自己的插件可能会更好。如果你当然知道 Java。您可以创建自定义 Web 控制器并将其绑定到您喜欢的 url,此控制器可以接受 buildId 参数,搜索构建 (SBuildServer.findBuildInstanceById()) 并输出 XML。

        查看与 TeamCity (TeamCity/devPackage) 捆绑在一起的 samplePlugin.zip 中的 HelloUserController.java。

        还值得检查一些 TeamCity 插件的来源:http://www.jetbrains.net/confluence/display/TW/TeamCity+Plugins

        【讨论】:

          【解决方案5】:

          this summary of a standard XML status format 是否描述了您的意思?我很确定 TeamCity 可以生成这种格式,但不确定如何生成。 Hudson 使用像 http://my.hudson.server.example.com:3030/cc.xml 这样的 URL。

          【讨论】:

          • 第一个链接对我有用。第二个链接是一个示例,向您展示状态链接的形式。它不应该工作。 (以 example.com 结尾的 URL 始终是示例。只需访问其中一个,例如 example.com,以获取进一步说明。)
          【解决方案6】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-12-14
            • 2014-09-23
            • 1970-01-01
            • 2012-09-04
            • 2017-11-29
            • 1970-01-01
            • 1970-01-01
            • 2014-11-21
            相关资源
            最近更新 更多