2009-05-20 82 views
9




有沒有人知道msbuild的SFTP任務?我們希望將部署自動化爲生產,但出於安全原因,我們不允許從開發/測試/構建環境到生產的SMB文件共享訪問。msbuild的SFTP任務?

現在,開發人員通過SFTP連接使用FileZilla手動上傳文件來部署代碼。這很容易出錯,所以我們打算自動上傳SFTP。雖然如果除了SFTP之外還有一些機制可以保證安全,我很樂意使用它。

我在考慮只使用「exec」msbuild任務和命令行ftp客戶端,如pscp。但是如果某人已經建立了一個sftp任務,那當然會很棒。


謝謝
理查德

回答

6

可以安裝的WinSCP,只是使用的MSBuild Exec Task

我用類似如下的構建後的ISO文件上傳到服務器。

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

您還需要/在「c:\ myfile.iso」之前上傳。這仍然會提示確認。我相信你可以在命令行上使用命令和「option confirm off」選項,但是在這一點上,按照Doug的建議,創建一個小腳本可能會更簡單。 – Jedidja 2011-03-12 06:43:49

-1

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

如果你有興趣購買一份,我們很樂意爲你編寫一份MSBuild SFTP任務 - 這將是一個方便的功能。聯繫方式在網站上。

0

安裝膩子並使用命令行工具將文件傳送到服務器。使用pagent和鍵可避免硬編碼或反覆輸入密碼。

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:[email protected] 

put %1%\* 

rm FtpDeployment.config 

exit 
+0

我還需要將/控制檯添加到Exec命令行才能工作。 – Jedidja 2011-03-12 06:42:55

0

有很多.net的SSH工具,拿一個並使用msbuild任務(創建你自己的)或ccnet任務來包裝它。

Ant有一個scp任務,如果可能的話從msbuild中調用一個ANT腳本。無論使用哪種情況都使用強大的公鑰/私鑰來加密。