Что нужно сделать для интеграции Octopus Deploy и TeamCity?
- Добавить OctoPack к проекту в Visual Studio.
- Добавить плагин к TeamCity
- Включить Nuget сервер на TeamCity.
- Создать деплой шаги в Octopus.
- Создать дополнительные шаги в TeamCity.
Добавление OctoPack к проекту в Visual Studio
Открываем наш проект в Visual Studio и добавляем Nuget пакет OctoPack в наш проект. Теперь во время билда нашего проекта, так же будут формироваться Octopus пакеты.
Добавление плагина к TeamCity
Скачиваем плагин с http://octopusdeploy.com/downloads и просто копируем архив в соответствующую папку на машине с TeamCity. После этого перегружаем сервисы TeamCity и TemaCity агента.
В моем случае это была папка C:\ProgramData\JetBrains\TeamCity\plugins.
Более подробное описание тут http://confluence.jetbrains.com/display/TCD8/Installing+Additional+Plugins
В моем случае это была папка C:\ProgramData\JetBrains\TeamCity\plugins.
Более подробное описание тут http://confluence.jetbrains.com/display/TCD8/Installing+Additional+Plugins
Включение Nuget сервера на TeamCity
Открываем консоль TeamCity и переходим в раздел Administration - NuGet Settings. Включаем Nuget Server и копируем его адрес. Далее открываем консоль Octopus Server, переходим в Configuration - NuGet и добавляем этот линк. Теперь неплохо бы проверить доступ Octopus к NuGet серверу.
Создание деплой шагов в Octopus
Для начала проверим что Octopus Deploy содержит нужные нам окружения и машины с правильными ролями. У меня создано окружение Dev с машиной WebDev, у которой роль Web. Так же у меня создан проект Web Site.
Переходим на наш проект в список шагов и создаем новый шаг с типом "Deploy a NuGet package". Задаем следующие параметры:
- Step name: Deploy
- NuGet package: имя вашего проекта, который был собран с TeamCity, в моем случае это Demo
- Deploy to roles: Web
Остальные параметры оставим пока по умолчанию.
Теперь добавим переменную "PackageDirectoryPath" с значением "c:\web". Переменные так же позволяют подменять значения в Web.config нашего сайта во время деплоймента, так мы можем установить различные значения ConnectionString для Dev и Live окружений.
Вернемся к списку шагов и обновим наш шаг Deploy, изменив значения:
- Destination folder: #{PackageDirectoryPath}
- Update IIS: нет
- Site/virtual directory: $OctopusParameters["OctopusProjectName"]
Теперь добавим второй шаг типом "Run a PowerShell script" и именем "Update IIS". Сам скрипт следующий:
$siteName = $OctopusParameters["OctopusProjectName"]
$path = $OctopusParameters["PackageDirectoryPath"]
$port = 80
Import-Module webadministration
New-Website -Name $siteName -PhysicalPath $path -Force -Port $port
Start-Website -Name $siteName
trap [Exception]
{
Write-Error $_.Exception.Message
exit 1
}
Данный скрипт настраивает IIS для нашего веб сайта. Роль конечно же "Web"
По настройкам Octopus Deploy все, теперь можно создать релиз и задеплоить его.
Создание деплой шагов в TeamCity
Открываем консоль TeamCity и переходим в редактирование нашего проекта, для этого можно нажать на имени проекта "Web Site", а потом выбрать "Edit Project Settings". Нам нужно создать новую "Build Configuration" с именем Deploy.
VCS оставляем по умолчанию и переходим собственно к "Build Step". Задаем:- Runner type: OctopusDeploy: Release
- Step name: Deploy
- Octopus URL: адрес нашего Octopus Deploy сервера
- API key: ключ нашего аккаунта в Octopus
- Project: Web site
- Release number: 1.2.5.%env.BUILD_NUMBER%
- Deploy to: Dev
- Wait for deployment to complete: да
Осталось добавить билд тригер, если мы хотим что бы деплоймент на Dev выполнялся после каждого успешного билда. Создаем "Finished Build Trigger" зависимого от "Web Site :: Build".
Все готово, возвращаемся на главную консоли TeamCity и запускам билд конфигурацию, в результате будут автоматически выполнятся следующие действия: