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

时间:2013-02-12 06:55:13

标签: teamcity

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

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

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

我怎样才能做到这一点?我已经创建了一个新的构建,我触发了构建和部署然后数据库构建,但它完全忽略我的依赖参数,我也无法改变构建的顺序。

感谢您的帮助!

2 个答案:

答案 0 :(得分:8)

根据documentation,现在可以在Teamcity 9中使用

  

覆盖依赖项属性

     

从TeamCity 9.0开始,可以通过在依赖构建中重新定义依赖项参数来覆盖它们。例如,构建配置A取决于B,B取决于C; A可以使用以下格式更改其任何依赖项中的参数:   reverse.dep ..

     

也可以一次更改所有依赖项中的参数:   reverse.dep。*。

     

要覆盖的依赖项属性可以在依赖构建A的参数名称中指定,可以在自定义构建对话框中,也可以通过构建配置参数。

     

将新参数推送到构建中将取代“如果有合适的”快照依赖项选项,则不要运行新构建,如果参数设置为非默认值,则可以触发新构建。

答案 1 :(得分:0)

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

相关

我自己尝试过,但遗憾的是我怀疑它目前无法实现。

Build Dependencies Setup文档支持:

  

当构建A依赖于构建B时,您可以从构建B传递属性   构建A,即属性只能在方向上传递   建立链流而不是相反

我认为这样的(通常是明智的)原因是由于以下原因:

  • 依赖构建配置可能是多个其他构建配置的依赖关系。

考虑一下:如果两个父母想要将他们的(不同的)参数传递给依赖的构建,那么他们在上一次成功的构建中获得了什么?#34;?从理论上讲,TeamCity可以检查上一次构建的属性是否与所需内容相匹配(否则重建)。但即便如此,您最终还是会为所有不同环境构建一个丑陋的构建历史记录。这实际上不符合构建配置的概念。

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

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