2009-05-20 34 views
9




Có ai biết nhiệm vụ SFTP cho msbuild không? Chúng tôi muốn tự động hóa các triển khai của chúng tôi để sản xuất, nhưng vì lý do bảo mật, chúng tôi không cho phép truy cập chia sẻ tệp SMB từ môi trường phát triển/thử nghiệm/xây dựng của chúng tôi để sản xuất.Tác vụ SFTP cho msbuild?

Hiện tại, nhà phát triển triển khai mã bằng cách tải lên tệp theo cách thủ công bằng FileZilla, qua kết nối SFTP. Điều này khá dễ xảy ra lỗi, vì vậy chúng tôi đang lên kế hoạch tự động tải lên SFTP. Mặc dù nếu có một số cơ chế khác ngoài SFTP sẽ an toàn, tôi rất sẵn lòng sử dụng cơ chế đó thay thế.

Tôi đang nghĩ đến việc chỉ sử dụng tác vụ msbuild "exec" và một ứng dụng khách dòng lệnh ftp như pscp. Nhưng nếu ai đó đã xây dựng một nhiệm vụ sftp rồi, điều đó tất nhiên sẽ rất tuyệt vời.


Cảm ơn,
Richard

Trả lời

6

thể cài đặt WinSCP và chỉ cần sử dụng MSBuild Exec Task

tôi đã sử dụng một cái gì đó như sau để tải lên một tập tin ISO vào một máy chủ sau khi một xây dựng.

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

Bạn cũng sẽ cần/tải lên trước "c: \ myfile.iso". Điều này vẫn sẽ nhắc xác nhận là tốt. Tôi tin rằng bạn có thể sử dụng lệnh và "tùy chọn xác nhận off" trên dòng lệnh, nhưng vào thời điểm đó nó có thể đơn giản hơn để chỉ cần tạo một kịch bản nhỏ như Doug đề nghị dưới đây. – Jedidja

-1

edtFTPnet/PRO cung cấp hỗ trợ đầy đủ cho SFTP trong .NET.

Nếu bạn quan tâm đến việc mua một bản sao, chúng tôi rất sẵn lòng viết một tác vụ MSBuild SFTP cho bạn - nó sẽ là một tính năng tiện dụng. Chi tiết liên lạc trên trang web.

0

Cài đặt putty và sử dụng các công cụ dòng lệnh để sftp tệp của bạn vào máy chủ. Sử dụng pagent và keys để tránh hardcoding hoặc gõ mật khẩu của bạn nhiều lần.

6

Tôi thường thực hiện CHÍNH XÁC như Ryu đã thực hiện và sử dụng WinSCP, tuy nhiên tôi thực hiện thêm một bước nữa và sử dụng khả năng tạo kịch bản của WinSCP để ánh xạ triển khai tùy chỉnh hơn.

Tôi đã trình bày chi tiết này trong một bài viết trên blog rằng các chi tiết đầy đủ các thiết lập:

http://www.diaryofaninja.com/blog/2010/09/21/continuous-integration-tip-1-ndash-ftp-deployment

tuy nhiên ý chính cơ bản của nó là đi qua trong một file script để WinSCP như sau:

<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> 

và tập lệnh của tôi trông giống như:

option batch abort 
option confirm off 

open ftp://myUsername:[email protected] 

put %1%\* 

rm FtpDeployment.config 

exit 
+0

Tôi cũng cần thêm/bàn điều khiển cho dòng lệnh Exec để hoạt động. – Jedidja

+1

Như tôi đã báo cáo trên mục blog của bạn, tôi thích phiên bản này rất nhiều, vì FtpDeployment.config có thể chứa thông tin đăng nhập và phân tách công việc của nhà phát triển (trong tệp .msbuild) từ người biết thông tin đăng nhập (FtpDeployment.config). Tôi đặt lệnh đóng trước lệnh thoát trong FtpDeployment.config. Bạn có thể sử dụng Tác vụ này nếu bạn không có nhiệm vụ GetDate. cám ơn này giúp alot – granadaCoder

+0

Cảm ơn phản hồi - tôi sẽ thêm nó vào bài đăng – Doug

0

Có rất nhiều công cụ SSH dựa trên .net, lấy một và bọc nó bằng cách sử dụng tác vụ msbuild (tạo của riêng bạn) hoặc nhiệm vụ ccnet.

Ant có tác vụ scp, nếu có thể gọi tập lệnh ANT từ msbuild. bất kỳ trường hợp nào sử dụng khóa công khai/riêng tư mạnh để mã hóa.

Các vấn đề liên quan