9




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

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

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


谢谢,
理查德

4

6 回答 6

6

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

在构建后,我使用类似以下的方法将 ISO 文件上传到服务器。

winscp.exe sftp://root:password;@192.168.0.200:22/uploaddir/ "c:\myfile.iso"
于 2009-09-30T18:11:43.540 回答
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 
于 2010-09-21T23:09:36.727 回答
2

FileZilla也从命令行支持这一点。

于 2009-11-05T11:15:16.050 回答
0

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

于 2009-10-30T12:03:04.160 回答
0

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

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

于 2011-09-06T08:38:16.593 回答
-1

edtFTPnet/PRO为 .NET 中的 SFTP 提供全面支持。

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

于 2009-06-04T01:00:13.653 回答