2

我正在使用 TeamCity 的一个相对较新的功能:文件内容替换器。在我当前的设置中,我的 VCS 中有一个 version.js 文件:

window["MyPlugin"].version = "1.0.##VCS_REVISION##.##CI_BUILD_NUMBER##";

我使用文件内容替换器构建功能将最后一部分替换为:

%build.vcs.number%.%system.build.number%

到目前为止,一切都很好!

我有一个相关的构建步骤。这是一个 MSBuild 步骤,但它除了调用 a 之外什么都不做ps1,它做了两个相关的事情:

  1. 将所有 js 文件移动到“ output”文件夹;
  2. 将所有js文件压缩到一个“ zips”文件夹中;

这些也是我的两个工件(一个输出文件夹和一个 zip 文件)。

但是,文件内容替换器会还原其更改,但此还原也反映在工件 nr 1 中,这些文件不受版本控制(即使它们位于我的项目文件夹的子文件夹中)。version.js未还原 zip 文件中的文件。

如果我将工件 1 更改为,my/output/folder => all.%build.vcs.number%.zip则 zip 文件还将包含恢复状态,而不是我想要的输出。

如何设置 TeamCity 以使工件文件不受此还原的影响?还是我需要这个构建功能以外的东西?

我正在使用在 Windows 2012 Server (VM) 和默认数据库上运行的 TeamCity 9.1.3 build 37176 进行评估。我使用 TFS 2013 作为我的 VCS。

PS。我也在JetBrains 论坛上问过这个问题。

4

1 回答 1

7

文件内容替换在“发布工件”阶段之前还原更改。这是“设计使然”。您可以在构建日志中检查它。但是,您可以在隐藏的工件中找到修改过的文件.teamcity/JetBrains.FileContentReplacer/
如果您想将更改的文件作为常规工件发布,您应该创建该文件的副本(或像您已经完成的那样打包/归档它)。此外,您可以创建一个脚本来进行必要的更改,而不是使用文件内容替换器构建功能,而这些更改不会被还原。

于 2015-11-12T10:38:34.280 回答