SVN触发构建后如何处理来自Teamcity服务器本身的api

Posted

技术标签:

【中文标题】SVN触发构建后如何处理来自Teamcity服务器本身的api【英文标题】:how to handle api from Teamcity server itself after build is triggered for SVN 【发布时间】:2013-11-13 11:22:10 【问题描述】:

我在 TeamCity 服务器中配置了一个 SVN 文件。并设置属性“在每次签入时触发构建”。因此,每次签入后都会触发文件构建。现在我想在构建触发时访问配置的 SVN 文件的构建信息。

我在 Mediawiki 有一个网络空间。 Mediawiki 有一些 api 来编辑/创建页面。我希望使用 TeamCity 服务器本身的 SVN 构建信息调用 Mediawiki api。

有没有办法做到这一点?

什么是 Teamcity 服务器中的 HSQL2 数据库。我们可以使用这个数据库来访问构建信息吗?

【问题讨论】:

【参考方案1】:

您可以使用 TeamCity REST API 来获取构建更改,例如:

curl /httpAuth/app/rest/changes?build=id:%teamcity.build.id%

作为命令行构建步骤将产生如下内容:

<changes count="3">
   <change href="/httpAuth/app/rest/changes/id:217404" id="217404" version="b6b97a0d7789d97df6df908ab582ebb723235f43" webLink="http://teamcity.my-domain.com/viewModification.html?modId=217404&personal=false"/>
   <change href="/httpAuth/app/rest/changes/id:217403" id="217403" version="064ecef5552ec2fb7875d7c26fe54cdf94b67bec" webLink="http://teamcity.my-domain.com/viewModification.html?modId=217403&personal=false"/>
   <change href="/httpAuth/app/rest/changes/id:217402" id="217402" version="9bc3a34c952059bbfc7bebeb79ba5a3c894ef555" webLink="http://teamcity.my-domain.com/viewModification.html?modId=217402&personal=false"/>
</changes>

然后您可以循环更改并点击其href,这将产生如下结果:

<change date="20130918T133404-0600" username="welsh" href="/httpAuth/app/rest/changes/id:217397" id="217397" version="51e925e354a83deccde881b30a76974b2ff745f4" webLink="http://teamcity.my-domain.com/viewModification.html?modId=217397&personal=false">
  <comment>
My comments are here
  </comment>
  <files>
    <file before-revision="90acd4da1972814094c22e3020c5073521a7b640@141323126c0" after-revision="51e925e354a83deccde881b30a76974b2ff745f4@1413290abe0" file="grails-app/views/layouts/global.gsp" relative-file="grails-app/views/layouts/global.gsp"/>
  </files>
  <user href="/httpAuth/app/rest/users/id:1" id="1" name="Welsh" username="welsh"/>
</change>

然后您可以创建一些东西来获取此信息以将其推送到您的媒体 wiki。

【讨论】:

感谢您的回复威尔士语。我会调查的。 嗨威尔士,我安装了 cURL 并尝试在命令行中使用自定义脚本进行新的构建步骤。 curl -v --basic --user admin:adminlocalhost:8111/httpAuth/app/rest/…。但它在构建运行时显示错误。构建错误 [16:22:01]步骤 2/2:命令行。 [16:22:01][步骤 2/2] 步骤命令行失败。 该错误不是实际错误。您需要查看构建日志以了解 cURL 命令失败的原因。我建议使用已经完成的构建使其在本地运行,然后将其作为构建步骤运行。 是的,威尔士语,它正在工作。我在命令行中犯了一个错误。现在它的工作。 嗨,威尔士,在您上面的回答中,您提到命令行将产生类似于 HTML 信息的内容。我尝试使用 curl 命令行。它在构建日志中带来了当前的构建 ID 和 TCSSESSIONID。您还提到我们可以遍历href。但我看不到结果中的href。我们如何在构建日志的脚本中完成循环?我们如何创建命令行 curl 或 Powelshell 脚本以在 Teamcity 中动态访问构建信息?

以上是关于SVN触发构建后如何处理来自Teamcity服务器本身的api的主要内容,如果未能解决你的问题,请参考以下文章

被`webView.uiDelegate`打开后如何处理`window.close`?

加入多个表后如何处理空值

用户选择允许后如何处理启用位置服务?

加载 HTML 后如何处理指令(使用 jQuery 数据表)?

读写分离中间件 MaxScale 在 slave 有故障后如何处理?

分组后如何处理大型集合聚合?