覆盖TeamCity中快照依赖项中的参数

覆盖TeamCity中快照依赖项中的参数,teamcity,Teamcity,我真的无法理解teamcity(7.1)中快照依赖性的概念 我们有一个构建项目,它根据构建参数(数据库名称和文件)部署数据库,我有一个构建项目,它构建并部署我们的web应用程序 我现在想做的是链接这两个构建,但覆盖build参数。我找到了如何访问依赖性生成参数(%dep.btXX.yyy%)的手册,但我不想访问它们,我想覆盖它们 我怎样才能做到这一点?我已经创建了一个新的构建,在其中我触发构建&部署,然后触发数据库构建,但是它完全忽略了我的依赖项参数,而且我不能更改构建的顺序 谢谢你的帮助 更新

我真的无法理解teamcity(7.1)中快照依赖性的概念

我们有一个构建项目,它根据构建参数(数据库名称和文件)部署数据库,我有一个构建项目,它构建并部署我们的web应用程序

我现在想做的是链接这两个构建,但覆盖build参数。我找到了如何访问依赖性生成参数(%dep.btXX.yyy%)的手册,但我不想访问它们,我想覆盖它们

我怎样才能做到这一点?我已经创建了一个新的构建,在其中我触发构建&部署,然后触发数据库构建,但是它完全忽略了我的依赖项参数,而且我不能更改构建的顺序


谢谢你的帮助

更新:此答案仅与TeamCity v8或更早版本相关

我自己也试过,但遗憾的是,我怀疑这目前不可能

文档支持这一点:

当生成A依赖于生成B时,可以从生成B传递属性 要构建属性,即属性只能在 构建链流,而不是相反

我认为这样做的(通常是明智的)原因是:

  • 依赖生成配置可以是多个其他生成配置的依赖项
想一想:如果两个父母想要将他们的(不同的)参数传递给依赖构建,那么“最后一次成功构建”会得到什么?理论上,TeamCity可以检查上一次构建的属性是否与所需匹配(否则重建)。但是,即使这样,您最终也会遇到针对所有不同环境的构建的丑陋的构建历史。这确实不符合构建配置的概念

重用生成配置的最佳方法是对其进行模板化,然后在项目级别创建多个项目并设置属性,以便它们可用于所有包含的生成配置

最终,最好的建议可能是重新考虑是否确实需要为项目使用两种构建配置。最佳做法是尽量减少构建配置和构建步骤的数量-将尽可能多的构建逻辑放入您自己的脚本中。

根据,现在Teamcity 9中可以:

重写依赖项属性

自TeamCity 9.0以来,有可能通过在依赖构建中重新定义依赖项参数来覆盖依赖项参数。例如,构建配置A依赖于B,B依赖于C;A可以使用以下格式更改其任何依赖项中的参数: 反向,副

还可以一次更改所有依赖项中的参数: 反向。副署长*

可以在“自定义生成”对话框或通过“生成配置参数”在从属生成A的参数名称中指定要重写的依赖项属性

将新参数推入生成将取代“如果有合适的快照依赖项,则不运行新生成”选项,如果该参数设置为非默认值,则可能触发新生成


你说的是反向构建参数依赖关系?Ie;生成X依赖于生成B,所以您希望为X指定的参数对B可用吗?对于签出规则,我希望这样做,以确保构建了正确的分支。如果我找到了方法,我会把它贴在这里。我想你想要的顺序是:部署数据库,然后构建和部署web应用?当您说覆盖构建参数时,值来自哪里?这是您希望手动输入TeamCity GUI的内容,还是您希望以编程方式覆盖的内容?您可以使用TeamCity API启动具有特定参数的构建。我认为您可以使用它获得所需的功能。请参阅TeamCity 9中的这一功能。请参阅下面ocroquette的答案。将答案留在这里,因为它对尚未升级到TC9的用户可能仍然有用。您能提供一个使用示例吗?