Задача SFTP для msbuild?
-
23-08-2019 - |
Вопрос
Кто-нибудь знает о задаче SFTP для msbuild?Мы хотели бы автоматизировать наши развертывания в рабочей среде, но по соображениям безопасности мы не разрешаем общий доступ к файлам SMB из нашей среды разработки / тестирования / сборки в рабочей среде.
Прямо сейчас разработчики развертывают код, вручную загружая файлы с помощью FileZilla по SFTP-соединению.Это довольно подвержено ошибкам, поэтому мы планируем автоматизировать загрузку SFTP.Хотя, если есть какой-то механизм, отличный от SFTP, который был бы столь же безопасным, я был бы рад использовать его вместо этого.
Я подумываю просто использовать задачу msbuild "exec" и ftp-клиент командной строки, такой как pscp.Но если кто-то уже создал sftp-задачу, это, конечно, было бы здорово.
Спасибо,
Ричард
Решение
Можно было бы установить WinSCP и просто использовать MSBuild Выполнить задачу
Я использовал что-то вроде следующего, чтобы загрузить ISO-файл на сервер после сборки.
winscp.exe sftp://root:password;@192.168.0.200:22/uploaddir/ "c:\myfile.iso"
Другие советы
Обычно я поступаю ТОЧНО так же, как делал Ryu, и использую WinSCP, однако я делаю еще один шаг вперед и использую скриптовые возможности WinSCP для создания более настраиваемого развертывания.
Я подробно описал это в сообщении в блоге, в котором подробно описана полная настройка:
http://www.diaryofaninja.com/blog/2010/09/21/continuous-integration-tip-1-ndash-ftp-deployment
однако основная суть этого заключается в передаче файла сценария в WinSCP следующим образом:
<Target Name="AfterBuild">
<!-- Set the path to your FTP program (winscp) -->
<PropertyGroup>
<PathToWinSCP>"C:\Program Files (x86)\WinSCP\winscp.exe"</PathToWinSCP>
</PropertyGroup>
<!-- Get the date as a string for our log filename-->
<GetDate Format="yyyyMMdd">
<Output PropertyName="DateString" TaskParameter="Date"/>
</GetDate>
<!-- Convert the path to an absolute path -->
<ConvertToAbsolutePath Paths="$(OutputPath)">
<Output TaskParameter="AbsolutePaths" PropertyName="OutputPath"/>
</ConvertToAbsolutePath>
<!-- Fire WinSCP and give it your script files name
as well as passing it the parameter to this build -->
<Exec Command="$(PathToWinSCP) /script=$(OutputPath)Deployment\FtpDeployment.config /parameter $(OutputPath) /log=$(OutputPath)FtpLog-$(DateString).txt" />
</Target>
и мой сценарий выглядит следующим образом:
option batch abort
option confirm off
open ftp://myUsername:myPassword@ftp.myftpsite.com
put %1%\*
rm FtpDeployment.config
exit
Файловая система также поддерживает это из командная строка.
Установите putty и используйте инструменты командной строки для передачи ваших файлов sftp на сервер.Используйте pagent и keys, чтобы избежать жесткого кодирования или повторного ввода пароля.
Существует множество SSH-инструментов на базе .net, возьмите один и оберните его с помощью msbuild task (создайте свой собственный) или ccnet task.
У Ant есть задача scp, если возможно, вызовите ANT-скрипт из msbuild.в любом случае используйте надежный открытый / закрытый ключ для шифрования.
edtFTPnet/PRO предлагает полную поддержку SFTP в .NET.
Если вы заинтересованы в приобретении копии, мы были бы рады написать для вас задание MSBuild SFTP - это была бы удобная функция.Контактные данные на сайте.