【问题标题】:Override parameter in snapshots dependencies in TeamCityTeamCity 中的快照依赖项中的覆盖参数
【发布时间】:2015-12-15 21:57:11
【问题描述】:

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

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

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

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

感谢您的帮助!

【问题讨论】:

  • 你说的是反向构建参数依赖? IE;构建 X 依赖于构建 B,因此您希望为 X 指定的参数对 B 可用?我想为结帐规则这样做,以确保建立正确的分支。如果我知道如何,我会在这里发布..
  • 我想您希望的顺序是:部署数据库,然后构建和部署 Web 应用程序?当您说覆盖构建参数时,值来自哪里?它是您想要手动输入到 TeamCity GUI 中的,还是您想要以编程方式覆盖的东西?
  • 您可以使用 TeamCity API 启动带有特定参数的构建。我认为您可以使用它获得所需的功能。

标签: teamcity


【解决方案1】:

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

覆盖依赖属性

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

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

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

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

【讨论】:

  • 你能提供一个使用例子吗?
【解决方案2】:

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

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

Build Dependencies Setup 文档支持这一点:

当构建 A 依赖于构建 B 时,您可以从构建 B 传递属性 构建A,即属性只能在的方向上传递 建立链流,反之亦然

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

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

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

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

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

【讨论】:

  • 这在 TeamCity 9 中现在是可能的。请参阅下面 ocroquette 的回答。
  • 在这里留下答案,因为它仍然可能对那些尚未升级到 TC9 的人有用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-13
  • 2013-04-28
  • 2016-03-19
  • 1970-01-01
  • 2014-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多