【问题标题】:Modify TeamCity build parameters programmatically以编程方式修改 TeamCity 构建参数
【发布时间】:2013-04-03 18:00:19
【问题描述】:

我在 TC 构建配置中创建了一些系统属性。 这些属性的值以这种方式传递给 maven 配置:

clean test -Dargument1=%system.property1% -Dargument2=%system.property2%

这按预期工作。 我现在要做的是在构建完成时修改系统属性的值,这样下一次构建就会得到这些值。 是否可以通过 Java 或使用 Maven以编程方式做到这一点? 这是正确的方法吗?

【问题讨论】:

  • 你能描述一下你的用例吗?
  • 我有一大串要运行的测试用例。在每个构建中,我只想运行一部分,所以我需要两个变量(where_to_start 和 how_many_to_run)。当构建完成并根据测试用例的结果我想更改这些值。当然我可以将它存储在一个文件中,但如果我/其他人可以手动更改这些值而不通过 ssh 编辑该文件,它也会很方便。
  • 我明白了。是的,这是可能的。看看this link
  • 我试过了,但这只会改变当前构建的值。在下一个中,所有系统属性都将具有我在开始时设置的值。
  • 啊,是的,我没有想到这个。你应该在 TeamCity 论坛上问这个问题。

标签: maven parameters teamcity teamcity-7.0 system-properties


【解决方案1】:

您可以为此定义构建属性。构建完成后,您可以制作一个 Maven 插件,向 TeamCity 发送发布请求并更改构建类型的这些构建属性的值。

【讨论】:

    【解决方案2】:

    如果我在你那里,我会制作 maven 任务,它会在构建完成时通过 TeamCity restAPI 更新你的属性。

    这看起来像是完成这项任务的最优雅的方式。

    restAPI 插件的完整解释可以在这里找到: http://confluence.jetbrains.com/display/TW/REST+API+Plugin 此处描述了您的用例所需的内容: 构建配置和模板设置

    构建配置参数:GET/DELETE/PUT http://*teamcity_url_goes_here*/httpAuth/app/rest/buildTypes//parameters/(接受/生成文本/纯文本) 您可以提出更新参数的请求。

    还有一件有趣的事:如果你想在同一服务器上运行的 TeamCity 构建中执行对 REST API 的请求,你可以使用 %teamcity.serverUrl% 预定义参数来构造 URL

    【讨论】: