是否有可能在同一目录上获得两个版本来结帐,请问如何做到这一点?
目前,两个不同的版本正在检出两个不同的目录。
答案 0 :(得分:17)
您可以通过控制结帐目录位置来实现此目的。
首先,您需要将checkout目录定义为两个版本都可以知道的内容。在您的构建配置中,浏览到版本控制设置 - >结帐设置。将结帐目录设置更改为Custom Path
。然后,系统将提示您提供要检出源的目录。这可以是你想要的任何地方**,只要TeamCity在那里有写权限。
接下来,您需要为每个项目修改Checkout Rules(也在版本控制设置上),以便它们定位到相对于Checkout Directory根目录的文件夹。您可以通过将规则设置为+:%some.repo.path%=>/%some.sub.folder%
来执行此操作。你可以开出你想要的任何子文件夹。我们只需将所有内容结帐到Checkout Directory根目录(=>/
)。
如果两个项目都引用了相同的Checkout目录,那么这种设置组合应该可以为您提供所需的控制和灵活性。
**对于我们的结帐目录,我们使用参数化值%teamcity.agent.work.dir%\%system.teamcity.projectName%\%branch%
。前两个参数是TeamCity系统参数,最后一个是我们定义的。在我们的系统上,这解析为G:\ BuildAgent \ work \ $ PROJECT \ $ BRANCH,它可以保持一切整洁和可预测。
答案 1 :(得分:3)
似乎VCS设置(VCS根和结帐规则集)对于这些构建配置是不同的,这就是TeamCity使用不同结帐目录的原因。在这种情况下,我不建议强制服务器使用相同的目录。
假设您有两个配置A和B,并且您配置了TeamCity以在同一目录中构建它们,但A和B具有不同的VCS设置。然后在结账时应该做什么?
例如,当构建A在代理上完成并且构建B在同一代理上启动时,TeamCity将必须清除checkout目录下的所有源并再次获取它们。当构建B在构建A之后开始时,同样的故事发生。因此,这些干净的检查将导致减速。
使用自动生成的结帐目录,服务器可以优化结账性能和代理上的磁盘使用情况。使用自定义结帐目录的方法不是最佳的,并且不可扩展。如果可能,请避免使用它。
另见: http://confluence.jetbrains.com/display/TCD8/Build+Checkout+Directory http://confluence.jetbrains.com/display/TCD8/Clean+Checkout