我使用TeamCity的一个相对较新的功能:文件内容替代品。在我的当前设置我有一个version.js文件在我的VCS:文件内容替代品对工件没有影响
window["MyPlugin"].version = "1.0.##VCS_REVISION##.##CI_BUILD_NUMBER##";
我用的文件内容替换构建功能,以取代去年部分:
%build.vcs.number%.%system.build.number%
到目前为止好!
我有一个相关的构建步骤。这是一个MSBuild一步,但它并没有什么不同之处称之为ps1
,它做了两两件事有关:
- 将所有的JS文件到“
output
”文件夹; - 将所有js文件压缩到“
zips
”文件夹中;
这些也是我的两个工件(一个输出文件夹和一个zip文件)。
但是,文件内容替代品恢复其更改,但该恢复也反映在工件1中,这些文件不受版本控制(即使它们位于我的项目文件夹的子文件夹中)。压缩文件中的version.js
文件未被还原。
如果我将工件1更改为my/output/folder => all.%build.vcs.number%.zip
,那么压缩文件还将包含恢复状态,而不是我想要的输出。
如何设置TeamCity以使工件文件不受此回复影响?还是我需要的东西不是这个构建功能?
我正在使用运行在Windows 2012 Server(VM)上的TeamCity 9.1.3 build 37176和用于评估目的的默认数据库。我使用TFS 2013作为我的VCS。
PS。我也问过这个on the JetBrains forums。
FWIW,我已经提出了一个TeamCity功能要求来改进:https://youtrack.jetbrains.com/issue/TW-43173 – Jeroen
是的,这是奇怪的。这些类型的操作曾经是V9之前的“构建步骤”,它属于IMO。我认为问题在于teamcity如何保持结帐目录,而不是每次都从头开始。 AppVeyor更好地处理这个方面,你可以从头开始,但可以指定特定的目录,如(nuget)包或node_modules等来在构建之间“保留”。这是一个更好的解决方案,然后在构建完成后,签出文件夹将继续执行,FileContentReplacer将“恢复文件”。 – enorl76