2013-04-16 3 views
1

У нас есть решение, состоящее из нескольких проектов. Некоторые из проектов - это задачи Windows, некоторые из них - службы Windows, а некоторые - mvc-сайты, которые работают на удаленном сервере. На этом сервере мы в настоящее время внедряем TeamCity в качестве сервера CI для автоматизации наших сборок и развертываний. На данный момент проекты развертываются на этом же сервере. Сборка, этапы тестирования и т. Д. Отлично работают, но я не уверен, как развернуть задачи и службы. Все учебные материалы по этой теме (по крайней мере, те, что я видел) касаются только развертывания веб-сайтов.C#, развертывание задач и служб окон после сборки teamcity

Наиболее очевидным способом является создание пост-строительного шага с использованием сценария powershell, который деинсталлирует текущую текущую службу Windows, удаляет старую службу, копирует новую dll и снова запускает службу. Файлы задач Windows можно было просто заменить непосредственно новой версией.

Однако мне не нравится это решение, оно очень грубо и может быть трудно реализовать, если сервер развертывания удален.

Есть ли у кого-нибудь лучшее предложение о том, как сделать развертывание?

Имейте славный день!

+0

Можно ли запускать установщик MSI, чтобы заменить старую службу как шаг после сборки? в этом случае вы можете проверить этот ответ http://stackoverflow.com/questions/4743064/windows-service-deployment. Надеюсь, поможет. –

+0

К сожалению, нет, благодарю вас за ваш ответ. – olif

ответ

1

Вы также можете развернуть службы Windows через Web Deployment Tool. Все, что вам нужно сделать, это создать файл manifest.xml с помощью runCommand (un/install and start/stop service) и dirPath.

Мой файл манифеста, который развертывает также БД и веб-сайт, выглядит так:

<sitemanifest> 
    <dbDacFx path='$dbSource' /> 
    <runCommand path='$presync' waitInterval='30000'/> 
    <dirPath path='$winSource' /> 
    <runCommand path='$postsync' waitInterval='30000'/> 
    <IisApp path='$webSource' managedRuntimeVersion='v4.0'/> 
    <setAcl path='$webSource' setAclResourceType='Directory'/> 
    <setAcl path='$webSource' setAclResourceType='Directory' setAclUser='anonymousAuthenticationUser'/> 
</sitemanifest> 

Это генерируется скриптом build в Psake, но вы можете сделать это, как пожелаете.

Я написал два блога об этой теме, но они на чешском языке.

Надежда, есть что-то, что может помочь вам.

3

Попробуйте взглянуть на осьминог Octopus: http://octopusdeploy.com/. Вы можете легко интегрировать его с TeamCity. Он обладает способностью обслуживать звезду/стоп и многое другое. Кроме того, он использует пакеты nuget.

+0

Это чрезвычайно полезно. И это бесплатно для небольших команд! – Anshul

0

Inedo's BuildMaster может забрать прямо там, где TeamCity не работает, используя BuildMaster TeamCity Extension. Есть бесплатная версия, которая, вероятно, решит ваши требования.

Мы должны решить эту проблему, когда мы используем BuildMaster для создания/развертывания BuildMaster (до того, как установщики будут созданы), и если вы посмотрите на конструкцию BuildMaster (Inedo.com> Support> Specificics> BuildMaster, вы можете подробно см., как мы останавливаем/развертываем/запускаем службу Windows.

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