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

Jer*_*oen 1 teamcity teamcity-9.1

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

window["MyPlugin"].version = "1.0.##VCS_REVISION##.##CI_BUILD_NUMBER##";
Run Code Online (Sandbox Code Playgroud)

我使用File Content Replacer构建功能将最后一部分替换为:

%build.vcs.number%.%system.build.number%
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好!

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

  1. 将所有js文件移动到" output"文件夹;
  2. 将所有js文件压缩到" zips"文件夹中;

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

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

如果我将工件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论坛上询问了这个问题.

Ali*_*ina 6

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