Поиск по сайту:

Как настроить автоматическое развертывание на ваших серверах с помощью Visual Studio и FTP


В Visual Studio есть параметры для автоматической публикации сборки выпуска на удаленных серверах по FTP. Это может быть очень полезно, если вы часто внедряете изменения или тестируете в удаленной среде. Мы покажем вам, как его настроить, и поговорим о том, как он работает.

Публикация через FTP

FTP — старый, как правило, небезопасный протокол, но если ваш FTP-сервер поддерживает современные расширения FTPS, использующие шифрование TLS, все должно быть в порядке. Вы также можете chroot пользователей FTP, чтобы они могли писать только в целевой каталог.

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

Однако поддерживаются не все типы сборок. Библиотеки классов, например, не имеют опций для публикации. Приложения ASP.NET Core поддерживаются лучше и имеют возможность публикации в Azure и Docker.

К счастью, для неподдерживаемых приложений вы можете подключить его самостоятельно, поскольку Visual Studio также предлагает варианты для запуска сценариев PowerShell после сборки. Они будут запускаться при сборке, а не при публикации, но вы можете просто настроить собственный профиль сборки «публикации» с скопированными настройками выпуска.

Вы можете использовать эти скрипты после сборки для передачи данных по FTP или SCP или даже для подключения к внешним службам, таким как AWS S3 или Docker Registry.

Настройка Visual Studio

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

Вам нужно будет создать новый профиль публикации или отредактировать профиль по умолчанию. Выберите FTPS-сервер, хотя вы можете опубликовать в Azure, Docker, локальной папке или веб-развертывании IIS, если они вам больше подходят.

Введите детали подключения. Вам нужно будет указать URL-адрес, путь, по которому он будет загружаться, и имя пользователя/пароль.

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

Настройка сценариев пост-сборки для других приложений

Встроенные параметры Visual Studio великолепны, но когда они не работают, вам нужно немного написать сценарий. Щелкните правой кнопкой мыши свой проект и выберите «Свойства»:

Затем в разделе «События сборки» вы можете настроить команду после сборки. Обратите внимание, что это cmd, поэтому вам нужно будет вручную вызвать PowerShell, и это также относится к выходной папке сборки, поэтому, если вы сохраняете сценарий PowerShell в корне вашего проекта, вам может потребоваться ссылка это несколько каталогов с .......

Настройте его на запуск после сборки, и вы можете выбрать, запускать ли скрипт всегда, всякий раз, когда он будет успешным, или всякий раз, когда сборка обновляется. Если вы перезапускаете серверы или что-то в этом роде, вам нужно будет запускать скрипт только после его обновления. В противном случае выберите «при успешной сборке», если у вас нет причин запускать скрипт при сбое сборки.

PowerShell не имеет встроенной поддержки FTP. У вас есть два варианта: использовать PowerShell Remoting через SSH для передачи на сервер Linux или использовать библиотеку PowerShell для FTP.

$s = New-PSSession -HostName 123.123.123.123 -UserName ubuntu
Copy-Item .example.txt /home/ubuntu -ToSession $s

Если вам нужно использовать FTP, WinSCP может легко справиться с передачей.

Add-Type -Path "WinSCPnet.dll"
$sessionOptions = New-Object WinSCP.SessionOptions
$sessionOptions.ParseUrl("ftp://username:password@example.com/")

$session = New-Object WinSCP.Session
$session.Open($sessionOptions)

$session.PutFiles("c:source*", "/destination/").Check()

$session.Dispose()

В любом случае вам нужно убедиться, что ваш скрипт имеет правильные ссылки на правильные расположения файлов. Если вы нажмете «Редактировать пост-сборку», вы увидите окно со списком всех переменных, которые вы можете передать в свой скрипт.