Выходные артефакты TeamCity, не опубликованные в папке IIS7

Я пытаюсь настроить TeamCity для создания и развертывания приложения ASP.NET MVC.

У меня успешно запущена установка на других серверах с использованием TeamCity 4.5, но новый сервер работает под управлением TeamCity 6, и у меня возникают проблемы с настройкой его работы, как ожидалось.

TeamCity удается получить файлы из системы контроля версий, и проект (Visual Studio Solution 2008, для которого установлено значение "Сборка") создает и выводит необходимые файлы, как и ожидалось. Кажется, проблема связана с моими путями артефактов, поскольку выходные файлы не копируются в папку веб-сайта.

Мое решение состоит из дюжины проектов, из которых "Веб" проект является интересным в данном случае. Каталог извлечения сборки находится в C:\TeamCity\buildAgent\work\7da320cebf0ee541, а проект "Web" находится в C:\TeamCity\buildAgent\work\7da320cebf0ee541\Web

Я настроил конфигурацию сборки со следующими путями артефактов (относительно каталога извлечения в папку, содержащую веб-сайт):

Web/bin=>../../../../inetpub/wwwroot/staging/bin
Web/Content=>../../../../inetpub/wwwroot/staging/Content
Web/Views=>../../../../inetpub/wwwroot/staging/Views
Web/Media=>../../../../inetpub/wwwroot/staging/Media
Web/*.aspx=>../../../../inetpub/wwwroot/staging
Web/*.asax=>../../../../inetpub/wwwroot/staging

(Я попробовал больше../ на всякий случай, но это не имело значения).

Это вывод, который я получаю из журнала

[19:35:29]: публикация артефактов (1с) [19:35:29]: [публикация артефактов] Пути публикации: [Web / bin =>../../../../ inetpub / wwwroot / staging / bin, Web / Content =>../../../../ inetpub / wwwroot / staging / Content, Web / obj =>../../../../ inetpub / wwwroot / staging / obj, Web / Views =>../../../../ inetpub / wwwroot / staging / Views, Web / Media =>../../../../ inetpub / wwwroot / staging / Media, Web /.aspx =>../../../../ inetpub / wwwroot / staging, Web /.asax =>../../../../ inetpub / wwwroot / staging, teamcity-info.xml] [19:35:30]: [Публикация артефактов] Отправка файлов [19:35:32]: Сборка завершена

Журналы с некоторых других серверов, на которых работает TeamCity 4.5, используют другой формат со строкой для каждого публикуемого артефакта, я не уверен, что это актуально или только из-за другого формата журналирования.

Кажется, все работает, но файлы не помещаются в папку моего сайта после сборки, я что-то здесь упускаю? Любая помощь будет высоко ценится:)

3 ответа

Решение

Я всегда использовал сценарии сборки для обработки такого рода процессов, так как вы используете TC6, вы должны иметь возможность добавить второй шаг сборки после построителя решений VS.NET, который выполняет копирование / перемещение. MSBuild, вероятно, будет предпочтительным методом сценариев для этого, но вы можете использовать простой консольный бегун, если вам все, что вам нужно сделать, это скопировать. Используя сценарий, вы сможете использовать абсолютный путь для каталога развертывания, который не должен быть таким же хрупким, как относительные пути.

Начиная с 6.0, TeamCity не позволяет публиковать артефакты за пределами каталога артефактов сервера (по соображениям безопасности). Я думаю, что это ваш случай.

В журналах сервера (TeamCity/logs/teamcity-server.log) должно появиться соответствующее предупреждение, начинающееся с "Попытка опубликовать артефакт за пределами каталога артефактов сборки".

Если вы не хотите публиковать файлы в каком-то определенном месте, вам, вероятно, следует создать отдельный шаг сборки, который бы отправлял файлы по FTP или что-то в нужное место.

Вы также можете проголосовать за http://youtrack.jetbrains.net/issue/TW-1558

Почему бы не взглянуть на Albacorebuild. Я использую его для контроля процесса сборки, запуска тестов, создания пакетов ZIP и NuGet. Больше информации и примеров здесь: http://daniel.wertheim.se/2011/07/14/continuous-integration-using-teamcity-rake-albacore-github-and-nunit-for-net-%E2%80%93-part-3/

Другие вопросы по тегам