Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在TeamCity中使用全局属性或构建步骤_Teamcity - Fatal编程技术网

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

在TeamCity中使用全局属性或构建步骤,teamcity,Teamcity,我的TeamCity服务器中有很多项目,用于构建和测试多个站点。我们每天晚上都使用Selenium RC测试站点,我希望重用一个步骤或配置,而不是在每个项目中使用副本 我曾研究过使用模板,但它们似乎只能从中定义的项目中访问。属性也是如此,因为我尝试在系统或环境属性中放置路径和一些共享值,并使用这些共享属性使用复制的构建步骤 但这一切都失败了,因为这些方法似乎都不适用于所有项目。你如何解决这类问题?这一定是可能的,对吧?您可以通过创建一个具有共享属性的虚拟构建配置来实现“全局属性”,然后为所有需要

我的TeamCity服务器中有很多项目,用于构建和测试多个站点。我们每天晚上都使用Selenium RC测试站点,我希望重用一个步骤或配置,而不是在每个项目中使用副本

我曾研究过使用模板,但它们似乎只能从中定义的项目中访问。属性也是如此,因为我尝试在系统或环境属性中放置路径和一些共享值,并使用这些共享属性使用复制的构建步骤

但这一切都失败了,因为这些方法似乎都不适用于所有项目。你如何解决这类问题?这一定是可能的,对吧?

您可以通过创建一个具有共享属性的虚拟构建配置来实现“全局属性”,然后为所有需要访问全局属性的构建创建一个构建依赖项。当调用真正的构建配置时,它将首先调用依赖的构建配置(它没有任何意义),然后从依赖配置传递属性(使用dep.bt前缀,而不仅仅是系统前缀)


根据共享构建步骤中需要的逻辑,您可能能够在依赖构建中实际执行真实逻辑(它将无法从“真实”构建中继承任何属性或VCS详细信息)。

根据我对您的问题的评论,您可以跨多个项目使用单个模板配置构建


请参阅TeamCity了解如何做到这一点。

因为这有点过时,而且上面的答案也不完全清楚,我想我会发布我是如何使用TeamCity 8+做到这一点的

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

  • 转到模板
  • 单击“移动”按钮(右下窗格)
  • 选择父级(或根)

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

    TeamCity有一个新功能(从8.0开始),支持全局配置/参数/环境变量。8.0支持项目组织/嵌套的新概念,并且作为该功能集的一部分,所有项目现在都从“根”项目中继承。在这个根项目上,您可以指定许多内容,包括参数等。这似乎不支持构建步骤

    他们记录了这一变化

    --


    所以您创建了一个模板,然后将项目与该模板关联(而不是复制!),但当您修改模板属性值时,这些更改不会更新关联的项目?我不明白如何将模板与另一个项目关联。你能描述一下吗?我只见过在同一个项目中使用模板。一个旧的TeamCity博客指出,模板和配置之间的跨项目关联现在可用,并且说明了如何做it@siyw:哇,我一定错过了!这正是我想要的——带有局部参数的全局模板。很快就要试用了。我能成为一个名声扫地的妓女并把它作为一个回答吗?;)依赖构建建议非常好。目前感觉有点“黑”,但它确实如你所描述的那样有效。如果有可能将参数发送到依赖项构建,那就太好了。我会尝试一下并给出反馈。谢谢这是一种共享参数的好方法,但我将为siyw提供解决方案标记,以提供关于如何使用模板的更准确答案。请注意,6.5的文档已更改: