如何在TeamCity中使用其他项目的构建参数?

时间:2011-07-11 17:37:02

标签: teamcity

我想在Project 2中使用项目1中的一些构建参数。我知道我可以使Project 1成为Project 2的依赖项,然后按照Dependencies Properties中的描述访问其构建参数,但我不知道希望Project 1能够响应Project 2的构建而构建。例如,假设我希望每晚构建Project 2,而我只希望每月构建Project 1。

项目2是否可以在这些条件下访问Project 1的构建参数?

2 个答案:

答案 0 :(得分:4)

我会使用两个项目之间共享的build configuration template

这意味着您可以在项目之间共享属性,但也可以覆盖每个项目中的某些属性。

我们将此用于未标记的每小时构建以及 标记的夜间构建。

然后使用不同的构建触发器每晚关闭一次,另一次每月关闭。

修改

由于您的评论,我会稍微扩展一下。

在TeamCity中,我们为同一个项目提供了2个构建配置。建立在每次办理登机手续的基础上,为开发人员提供有关其贡献的快速反馈(在15分钟内构建)。它执行以下操作:

  • 在Debug
  • 中构建项目
  • 运行所有单元测试
  • 检查构建到Subversion的结果

其他配置每晚午夜运行;它构建了一切,因此需要很长时间(大约45分钟)。它执行以下操作:

  • 在“调试和发布”中构建项目
  • 运行所有单元测试
  • 构建Sandcastle文档
  • 检查构建到Subversion的结果
  • 抓住人工制品上的Sandcastle输出,以便开发人员轻松下载。

正如你所指出的,这并不像人们想的那么简单;但是你可以使用以下方法来实现它:

  • 我们使用Autoincrementer在两个配置之间共享内部版本号(它们在构建时都会增加相同的内部版本号。)
  • 我们在模板上有一个属性,用于定义要收集的人工制品,并从人工制品字段中引用。在第二个构建配置上重写该属性,以定义要抓取的sandcastle输出。
  • documentation上提到了共享VCS根。我们的构建都从同一个地方获取源,并将结果标记到同一个地方。一个VCS绝对是我们所需要的。

有点长时间的编辑,但我认为这完全取决于你想要实现的目标。我很感激我应该把它包含在原始答案中。

HTH

答案 1 :(得分:2)

依赖与TeamCity中的构建触发不同。如果你让一个项目依赖于另一个项目(工件依赖项),那并不意味着后者会触发前者。

即使一个项目被定义为依赖于另一个项目(并且即使没有),您也必须明确指定要触发的依赖项目的构建触发器(在本例中为Finish构建触发器)。