1

有没有办法让 TeamCity 构建的工件被引用(但不复制)作为另一个 TeamCity 构建的依赖项?

一些背景知识:我一直在尝试减少我们的几个 TeamCity 配置中的构建时间。这是一个 c++ 程序,它依赖于几个 3rd 方库,我们的系统管理员一直不愿意将其安装在构建机器上。

我们的第一次运行将库压缩并解压缩/编译为配置中的构建步骤。这需要一段时间,因此系统管理员建议将第 3 方库解压缩/编译移动到单独的配置中,并将该构建的工件设置为我正在尝试加速的构建的依赖项。

然而,在这种构建配置下,情况会更糟。扩展/编译的第 3 方库的大小(超过 1GB)实际上使原始配置的速度提高了 10 分钟以上。如果有办法只引用工件目录而不复制东西,那就太棒了。

4

2 回答 2

2

不要使用人工制品依赖项。

而是创建两个或多个构建配置(一个用于您的主应用程序,一个或多个用于第 3 方库)然后在它们之间创建快照依赖项,将其配置为Run build on the same agent

这样做将确保您的 3rd 方库中的二进制文件始终在本地文件系统上可用并且始终是最新的(但无需不断重建 - 假设没有源更改)。

您应该能够在结帐目录中轻松找到第 3 方二进制文件。

人工制品缓慢的原因是它们被上传到中央中央服务器,然后由代理下载。显然不适合 1GB 的 3rd 方库。

于 2013-09-16T22:35:38.030 回答
1

据我所知,没有办法阻止工件从服务器复制到代理:编译器/链接器不可能找到依赖项......

在我看来,您可以通过发布压缩工件(只需将“.zip”推迟到目标路径)并从“上次成功构建”中获取它们来充分利用这两种配置。

这样,您将仅在相应的源代码更改(减少总体构建时间)时触发 lib 重新编译,并且工件将作为压缩存档传输(减少传输时间)。

也许您可以通过将每个库与其他库分开构建来进一步优化:只有具有未决更改的库才会被重新编译。

于 2013-08-26T21:33:57.087 回答