在TeamCity中使用全局属性或构建步骤

5
我在TeamCity服务器上有很多项目,用于构建和测试多个网站。我们每晚使用Selenium RC测试网站,我想重复使用一个步骤或配置,而不是在每个项目中都有副本。
我尝试使用模板,但它们似乎只能从定义它的项目中访问。同样,对于路径和一些共享值,我尝试将其放入系统或环境属性中,并使用使用这些共享属性的复制构建步骤。
但所有这些方法都失败了,因为似乎没有一种方法可以跨项目使用。你如何解决这种问题?肯定有办法吧?

我不明白如何将模板与另一个项目关联起来。你能描述一下吗?我只看到过在同一个项目中使用模板的情况。 - Niklas Wulff
一篇旧的TeamCity博客文章指出,现在可以在模板和配置之间建立跨项目关联,并且文档说明了如何实现。 - Siy Williams
@siyw:哇,我一定是错过了这个!这正是我正在寻找的 - 具有本地参数的全局模板。很快就会尝试。 - Niklas Wulff
这太完美了,谢谢siyw!你能发一篇答案吗,这样我就可以将其标记为解决方案了吗? - Niklas Wulff
哈哈,是的,你可以!没看到你的评论。 - Niklas Wulff
显示剩余2条评论
4个回答

6
根据我对你问题的评论,你可以使用单个模板配置构建多个项目。
请参考TeamCity文档以了解如何执行此操作。 (点击此处)

注意到6.5的文档被修改了:http://confluence.jetbrains.com/display/TCD65/Build+Configuration+Template - Niklas Wulff

5
TeamCity有一个新功能(自8.0版本起)支持全局配置/参数/环境变量。8.0版本支持项目组织/嵌套的新概念,作为该功能集的一部分,所有项目都继承自“根”项目。在该根项目上,您可以指定许多内容,包括参数等。但是,这似乎不支持构建步骤。
他们在http://youtrack.jetbrains.com/issue/TW-11202中记录了此更改。
图片请参考以下链接:
enter image description here
enter image description here

3
您可以通过创建一个虚拟的构建配置来实现“全局属性”,该构建配置包含您的共享属性,然后对于所有需要访问全局属性的构建,您创建一个构建依赖关系。当调用您的真实构建配置时,它将首先调用依赖的构建配置(该配置不执行任何有意义的操作),然后将属性从依赖配置传递(使用dep.bt前缀而不是系统前缀)。
根据您在共享构建步骤中所需的逻辑,您可能能够在依赖构建中实际执行真正的逻辑(它无法继承任何属性或VCS详细信息)。

依赖构建建议非常好。目前感觉有点“hacky”,但正如您所描述的那样,它肯定有效。如果有可能向依赖项构建发送参数,那将是很棒的。我会尝试并反馈意见。谢谢! - Niklas Wulff
这是一个很好的共享参数的方式,但我会把解决方案标记给siyw,因为他提供了一个更准确的如何使用模板的答案。 - Niklas Wulff

1

由于这篇文章有些过时,而且上面的回答不是很清晰,我想分享一下我如何在TeamCity 8+中完成此操作。

基本上,可以在项目及其子项目中使用模板。如果将模板移到父级,则原始项目的所有同级项目都可以使用该模板。

  1. 进入模板。
  2. 点击“移动”按钮(右下角窗格)。
  3. 选择一个父级(或根目录)。

注意:如果模板附加到与当前项目绑定的VCS根目录,则必须首先将VCS根目录移动到您要移动模板的相同级别。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接