Заменитель содержимого файла, не влияющий на артефакты
Я использую относительно новую функцию TeamCity: File Content Replacer. В моей текущей установке у меня есть файл version.js в моей VCS:
window["MyPlugin"].version = "1.0.##VCS_REVISION##.##CI_BUILD_NUMBER##";
Я использую функцию сборки File Content Replacer, чтобы заменить эту последнюю часть:
%build.vcs.number%.%system.build.number%
Все идет нормально!
У меня есть один соответствующий шаг сборки. Это шаг MSBuild, но он ничего не делает, кроме как вызывает ps1
, который делает две важные вещи:
- Перемещает все js-файлы в "
output
папка; - Zips все файлы JS в "
zips
папка;
Это также два моих артефакта (выходная папка и zip-файл).
Тем не менее, File Content Replacer отменяет свои изменения, но этот возврат также отражается в артефакте nr 1, который представляет собой файлы, которые не находятся под контролем версий (даже если они находятся в подпапках папки моего проекта). version.js
файл в zip-файле не восстанавливается.
Если я изменю артефакт 1 на my/output/folder => all.%build.vcs.number%.zip
тогда zip-файл также будет содержать возвращенное состояние вместо вывода, который я хочу.
Как настроить TeamCity так, чтобы файлы артефактов не затрагивались этим возвратом? Или мне нужно что-то кроме этой функции сборки?
Я использую TeamCity 9.1.3 build 37176 под управлением Windows 2012 Server (VM) и базу данных по умолчанию для целей оценки. Я использую TFS 2013 в качестве моего VCS.
PS. Я также спрашивал об этом на форумах JetBrains.
1 ответ
Замена содержимого файла отменяет изменения до этапа "Публикация артефактов". Это "по замыслу". Вы можете проверить это в журнале сборки. Однако вы можете найти измененные файлы в скрытых артефактах .teamcity/JetBrains.FileContentReplacer/
,
Если вы хотите опубликовать измененный файл как обычный артефакт, вы должны создать копию файла (или упаковать / заархивировать его, как вы уже сделали). Также вместо использования функции сборки File Content Replacer вы можете создать скрипт, который будет вносить необходимые изменения, которые не будут отменены.