msbuild的SFTP任务?

时间:2009-05-20 01:12:44

标签: deployment msbuild build-automation sftp




有谁知道msbuild的SFTP任务?我们希望将我们的部署自动化到生产中,但出于安全考虑,我们不允许从开发/测试/构建环境访问SMB文件共享到生产。

目前,开发人员通过SFTP连接使用FileZilla手动上传文件来部署代码。这非常容易出错,因此我们计划自动执行SFTP上传。虽然除了SFTP之外还有一些其他机制同样安全,但我很乐意使用它。

我正在考虑使用“exec”msbuild任务和命令行ftp客户端,例如pscp。但如果有人已经建立了一个sftp任务,那当然会很棒。


谢谢,
理查德

6 个答案:

答案 0 :(得分:6)

可以安装WinSCP并只使用MsBuild Exec Task

我使用类似下面的内容在构建后将ISO文件上传到服务器。

winscp.exe sftp://root:password;@192.168.0.200:22/uploaddir/ "c:\myfile.iso"

答案 1 :(得分:6)

我通常会像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 

答案 2 :(得分:2)

FileZilla也支持command line

答案 3 :(得分:0)

有很多基于.net的SSH工具,拿一个并使用msbuild任务(创建你自己的)或ccnet任务包装它。

Ant有一个scp任务,如果可能的话,从msbuild调用一个ANT脚本。无论如何使用强大的公钥/私钥进行加密。

答案 4 :(得分:0)

安装putty并使用命令行工具将文件sftp到服务器。使用pagent和键可以避免硬编码或重复输入密码。

答案 5 :(得分:-1)

edtFTPnet/PRO完全支持.NET中的SFTP。

如果您有兴趣购买副本,我们很乐意为您编写MSBuild SFTP任务 - 这将是一个方便的功能。网站上的联系方式。