C#, Развертывание задач и служб Windows после сборки teamcity

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

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

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

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

Хорошего дня!

3 ответа

Решение

Вы также можете развернуть службы Windows через Web Deployment Tool. Все, что вам нужно сделать, это создать manifest.xml файл с runCommand (удалить / установить и запустить / остановить сервис) и 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>

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

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

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

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

BuildMaster от Inedo может подобрать то, где TeamCity завершает работу, с помощью расширения BuildMaster TeamCity. Доступна бесплатная версия, которая, вероятно, удовлетворит ваши требования.

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

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