文件内容替换器对工件没有影响

时间:2015-11-12 07:55:57

标签: teamcity teamcity-9.1

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

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

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

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

到目前为止一切顺利!

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

  1. 将所有js文件移至“output”文件夹;
  2. 将所有js文件解压缩到“zips”文件夹中;
  3. 这些也是我的两个工件(输出文件夹和zip文件)。

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

    如果我将工件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。我也问了这个on the JetBrains forums

1 个答案:

答案 0 :(得分:6)

File content replace reverts changes before "Publishing artifacts" stage. This is "by design". You can check it in the build log. However you can find modified files in hidden artifacts .teamcity/JetBrains.FileContentReplacer/.
If you want to publish changed file as regular artifact you should create a copy of the file (or pack/archive it as as you've already done). Also instead of using File Content Replacer build feature you can create a script that would make needed changes which aren't reverted.