代码之家  ›  专栏  ›  技术社区  ›  David Christiansen

如何从TeamCity检索XML中的构建状态

  •  4
  • David Christiansen  · 技术社区  · 16 年前

    我需要以XML的形式从TeamCity检索构建状态,RSS格式将是理想的。

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

    我想知道是否有人发现了任何有帮助的东西?

    亲切问候,,

    6 回复  |  直到 11 年前
        1
  •  2
  •   brasskazoo    14 年前

    你可以使用 Syndication Feed My Settings And Tools 生成RSS URL(文档) here ),并跟踪更改与生成结果,以确定状态(即生成和以前的成功/失败)

    例如,我刚刚创建了此URL以查看最近5次构建结果:

    http://teamcity:8111/feed.html?buildTypeId=bt2&itemsType=builds&itemsCount=5
    

    哪里:

    • buildTypeId 是配置的ID(通过检查构建的URL获取)
    • itemsType 可以是“构建”或“更改”,或两者兼而有之

    您可以使用“更改”类型来确定当前是否正在进行生成。。。

    TeamCity RSS还有其他URL选项 here 例如 buildStatus sinceDate

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

        2
  •  2
  •   Community CDub    8 年前

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

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

        3
  •  1
  •   Dan Vinton    16 年前

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

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

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

    • 构建开始
    • 构建成功还是失败

    两者都会生成通知,从中可以推断生成状态。电子邮件的自动化非常简单,Jabber是一个开放的标准,所以我认为这也相当容易。

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

        4
  •  1
  •   Pavel Sher    16 年前

    也许编写自己的插件更好。当然,如果你懂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
  •  0
  •   Douglas Squirrel    16 年前

    this summary of a standard XML status format 描述一下你的意思?我很确定TeamCity可以制作这种格式,但不确定如何制作。Hudson使用类似于 http://my.hudson.server.example.com:3030/cc.xml

        6
  •  0
  •   Alfons user168345    10 年前

    我使用API per buildtype实现了这一点:

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