Я работал над следующим этапом моего проекта непрерывной интеграции, который заключается в получении TeamCity для сборки моего приложения, автоматического изменения номера версии всех сборок, а затем создания установщика.
Сначала немного предыстории:
Последние несколько месяцев я успешно запускаю TeamCity, он строит мои конфигурации и отлично выполняет мои тесты NUnit и NCover.
Я потратил немного времени на изучение установщиков - я всегда ненавидел InstallShield и никогда не рассматривал его для своего текущего приложения.Мне нравится NSIS, но потом случайно наткнулся на WiX .Я не обладаю глубокими знаниями об архитектуре MS Installer, что, как я понимаю, опасно для сложных проектов, поэтому в какой-то момент мне нужно будет больше узнать об этом.Тем не менее, после нескольких дней изучения SO-вопросов, поиска в Google и чтения блогов, у меня есть проект WiX, который успешно компилируется, устанавливается, запускается приложение и все удаляется чисто.Отлично!
Я также хотел, чтобы конфигурация сборки TeamCity автоматически обновляла номер версии всех моих сборок.Мне удалось смоделировать эту функцию, установив Задачи сообщества MSBuild на моей машине для разработки и создав конфигурацию развертывания, в которой используются цель BeforeBuild и FileUpdate .Задача изменить номер версии.Это работает должным образом, за исключением того, что на моей машине для разработки у меня нет build_vcs_number_1 переменной среды для замены.
Так вот где я сейчас нахожусь - мне нужно, чтобы TeamCity сделалобновить, и хотя в нем есть переменная окружения build_vcs_number_1 , я не могу понять, как получить доступ к Задачам сообщества WiX MSBuild.
Один пост, который я прочитал, рекомендовал проверить в целях MSBuildв папку SVN.У меня есть папка / extlib для подобных вещей, поэтому мои правила оформления TeamCity VCS выглядят примерно так:
+:tags/2010-10-15=>src
+:extlib=>extlib
Как мне получить extlib из переменной среды? Когда я запускаю сборку, TeamCity жалуется (и правильно), что не может найти c:\wix30\MSBuildCommunityTasks
.Фактическая папка C:\TeamCity\buildAgent\work\3e073d2b74226378\extlib\wix30\MSBuildCommunityTasks
.Папка создается автоматически, так как я делаю проверку на стороне сервера, поэтому должна быть некоторая переменная среды, которую TeamCity устанавливает, которую я могу использовать для получения правильного пути.
Одна вещь, на которую я должен обратить внимание, -Я вошел в конфигурацию сборки -> Свойства и переменные среды и нашел неинтуитивный выпадающий список со всеми существующими переменными, и не увидел ничего похожего на переменную, указывающую на рабочий путь.
Одна из возможныхОбходной путь, о котором я могу подумать, - это просто установить задачи сообщества MSBuild на сервере сборки, а затем я могу создать системную переменную среды, к которой может обращаться <WixToolPath>
.
У кого-нибудь есть другие предложения?