2015-11-12 2 views
1

Я использую относительно новую функцию 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, который делает две соответствующие вещи:

  1. Moves все Js файлы в папку «output»;
  2. Замещает все файлы 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.

ответ

6

Содержимое файла заменяет изменения в обратном направлении перед стадией «Публикация артефактов». Это «по дизайну». Вы можете проверить его в журнале сборки. Однако вы можете найти измененные файлы в скрытых артефактах .teamcity/JetBrains.FileContentReplacer/.
Если вы хотите опубликовать измененный файл как обычный артефакт, вы должны создать копию файла (или пакет/архивировать его так, как вы уже сделали). Кроме того, вместо использования функции сборки файлов Content Replacer вы можете создать скрипт, который сделает необходимые изменения, которые не будут отменены.

+0

FWIW, я разместил запрос функции TeamCity, чтобы улучшить это: https://youtrack.jetbrains.com/issue/TW-43173 – Jeroen

+0

Да, это странно. Этими типами операций были «Шаги сборки» до V9, который является ИМО, где он принадлежит. Я думаю, что проблема заключается в том, как teamcity хранит каталоги для проверки, вместо того, чтобы начинать с нуля каждый раз. AppVeyor лучше справляется с этим аспектом, когда вы начинаете с нуля, но можете указать определенные каталоги, например (nuget) или node_modules и т. Д., Чтобы «сохранить» между сборками. Это гораздо лучшее решение, после чего папка выгрузки и FileContentReplacer «восстанавливает файл» после завершения сборки. – enorl76

 Смежные вопросы

  • Нет связанных вопросов^_^