Я использую относительно новую функцию TeamCity: File Content Replacer. В моей текущей настройки у меня есть файл version.js в моем VCS:File Content Replacer, не влияющий на артефакты
window["MyPlugin"].version = "1.0.##VCS_REVISION##.##CI_BUILD_NUMBER##";
использовать функцию Content Заменитель сборки файла, чтобы заменить эту последнюю часть с:
%build.vcs.number%.%system.build.number%
До сих пор так хорошо!
У меня есть один соответствующий шаг построения. Это шаг MSBuild, но это не делает ничего, кроме назвать ps1
, который делает две соответствующие вещи:
- Moves все Js файлы в папку «
output
»; - Замещает все файлы js в папку «
zips
»;
Это также мои два артефакта (выходная папка и zip-файл).
Тем не менее, File Content Replacer восстанавливает свои изменения, но этот возврат также отражается в artifact 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. Я также спросил об этом on the JetBrains forums.
FWIW, я разместил запрос функции TeamCity, чтобы улучшить это: https://youtrack.jetbrains.com/issue/TW-43173 – Jeroen
Да, это странно. Этими типами операций были «Шаги сборки» до V9, который является ИМО, где он принадлежит. Я думаю, что проблема заключается в том, как teamcity хранит каталоги для проверки, вместо того, чтобы начинать с нуля каждый раз. AppVeyor лучше справляется с этим аспектом, когда вы начинаете с нуля, но можете указать определенные каталоги, например (nuget) или node_modules и т. Д., Чтобы «сохранить» между сборками. Это гораздо лучшее решение, после чего папка выгрузки и FileContentReplacer «восстанавливает файл» после завершения сборки. – enorl76