Как настроить автоматическое развертывание на ваших серверах с помощью 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()
В любом случае вам нужно убедиться, что ваш скрипт имеет правильные ссылки на правильные расположения файлов. Если вы нажмете «Редактировать пост-сборку», вы увидите окно со списком всех переменных, которые вы можете передать в свой скрипт.