6

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

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

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

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

感谢帮助!

4

2 回答 2

8

根据文档,现在可以在 Teamcity 9 中使用:

覆盖依赖属性

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

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

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

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

于 2015-06-10T16:57:24.190 回答
0

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

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

Build Dependencies Setup文档支持这一点:

当构建 A 依赖于构建 B 时,您可以将构建 B 的属性传递给构建 A,即属性只能在构建链流的方向上传递,反之则不行

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

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

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

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

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

于 2013-09-16T23:14:49.850 回答