SFTP задача для msbuild? - PullRequest
9 голосов
/ 20 мая 2009




Кто-нибудь знает о задаче SFTP для msbuild? Мы хотели бы автоматизировать наши развертывания в рабочей среде, но по соображениям безопасности мы не разрешаем общий доступ к файлам SMB из нашей среды dev / test / build для производства.

В настоящее время разработчики внедряют код, загружая файлы вручную с помощью FileZilla через соединение SFTP. Это довольно подвержено ошибкам, поэтому мы планируем автоматизировать загрузку SFTP. Хотя, если есть какой-то механизм, отличный от SFTP, который был бы столь же безопасным, я был бы рад использовать его вместо этого.

Я имею в виду просто использовать задачу exec msbuild и клиент ftp из командной строки, такой как pscp. Но если кто-то уже создал задачу sftp, это, конечно, было бы здорово.


Спасибо,
Ричард

Ответы [ 6 ]

6 голосов
/ 22 сентября 2010

Я обычно делаю ТОЧНО, как Рю, и использую 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 
6 голосов
/ 30 сентября 2009

Может установить WinSCP и просто использовать MsBuild Exec Task

Я использовал что-то вроде следующего, чтобы загрузить файл ISO на сервер после сборки.

winscp.exe sftp://root:password;@192.168.0.200:22/uploaddir/ "c:\myfile.iso"
2 голосов
/ 05 ноября 2009

FileZilla также поддерживает это из командной строки .

0 голосов
/ 06 сентября 2011

Существует множество инструментов SSH на основе .net, возьмите один и оберните его, используя задачу msbuild (создайте свою собственную) или задачу ccnet.

У Ant есть задача scp, если возможно, вызовите скрипт ANT из msbuild. В любом случае для шифрования используйте надежный открытый / закрытый ключ.

0 голосов
/ 30 октября 2009

Установите putty и используйте инструменты командной строки для sftp ваших файлов на сервер. Используйте пагент и ключи, чтобы избежать повторного ввода или повторного ввода пароля.

0 голосов
/ 04 июня 2009

edtFTPnet / PRO предлагает полную поддержку SFTP в .NET.

Если вы заинтересованы в приобретении копии, мы будем рады написать для вас задачу MSBuild SFTP - это будет удобная функция. Контактная информация на сайте.

...