10

是否可以在同一个目录上签出两个版本,请问如何做到这一点?

目前,两个不同的构建正在检出到两个不同的目录。

4

2 回答 2

23

您可以通过控制结帐目录位置来完成此操作。

首先,您需要将结帐目录定义为两个版本都可以知道的内容。在您的构建配置中,浏览到版本控制设置 -> 签出设置。将结帐目录设置更改为Custom Path。然后将提示您提供要签出源的目录。这可以是您想要的任何地方**,只要 TeamCity 在那里有写入权限。

接下来,您需要修改每个项目的签出规则(也在版本控制设置上),以便它们以相对于签出目录的根目录为目标的文件夹。您可以通过将规则设置为 来做到这一点+:%some.repo.path%=>/%some.sub.folder%。您可以在那里指定您想要的任何子文件夹。我们只需将所有内容签出到 Checkout Directory 根目录 ( =>/)。

如果两个项目都引用同一个 Checkout Directory,那么这种设置组合应该为您提供所需的控制和灵活性。

** 对于我们的结帐目录,我们使用参数化值%teamcity.agent.work.dir%\%system.teamcity.projectName%\%branch%。前两个参数是TeamCity系统参数,最后一个是我们自己定义的。在我们的系统上,这会解析为 G:\BuildAgent\work\$PROJECT\$BRANCH,这使得一切都保持整洁和可预测。

于 2012-12-09T19:16:51.140 回答
3

似乎 VCS 设置(一组 VCS 根和检出规则)对于这些构建配置是不同的,这就是 TeamCity 使用不同检出目录的原因。在这种情况下,我不建议强制服务器使用相同的目录。

假设您有两个配置 A 和 B,并且您将 TeamCity 配置为在同一目录中构建它们,但 A 和 B 具有不同的 VCS 设置。那么结账时应该怎么做呢?

例如,当构建 A 在代理上完成并且构建 B 在同一个代理上启动时,TeamCity 将不得不清理结帐目录下的所有源并再次获取它们。在构建 A 之后启动构建 B 时也会发生同样的情况。因此,这些干净的签出会导致速度变慢。

使用自动生成的结帐目录,服务器可以优化结帐性能和代理上的磁盘使用情况。使用自定义结帐目录的方法不是最佳的,并且不可扩展。尽可能避免它。

另见: http: //confluence.jetbrains.com/display/TCD8/Build+Checkout+Directory http://confluence.jetbrains.com/display/TCD8/Clean+Checkout

于 2014-08-26T07:25:52.073 回答