2010-05-07 42 views
10

Tôi có một tập lệnh NAnt mà tôi sử dụng để xây dựng dự án .NET của mình và tôi đang tìm cách xem có cách tải lên tập hợp kết quả đến một số thư mục từ xa bằng cách sử dụng tác vụ FTP hay không.tải lên tệp bằng FTP bằng nant

Tôi không thể tìm thấy bất kỳ ví dụ trực tuyến nào tốt và tôi tự hỏi liệu có ai biết cách làm điều đó không, nếu nó có thể thực hiện được.

FYI: Tôi đang chạy nó trên một máy tính cửa sổ, nếu nó làm cho bất kỳ sự khác biệt.

Trả lời

5

Bạn có thể sử dụng WinSCP làm console application trong tác vụ NAnt <exec>. Sử dụng WinSCP sẽ cung cấp cho bạn quyền truy cập vào các tính năng bổ sung như synchronization.

Đó là những gì chúng tôi đang làm và nó hoạt động như một sự quyến rũ.

2

Chúng tôi sử dụng một cái gì đó như thế này (Nant-0.86-beta1):

<!-- Copies files from artifacts folder to destination folder --> 
<target name="deploy-configuration"> 
    <!-- Generate temporary folder for the processed web.config --> 
    <property name="generated-config-file-path" value="${path::get-temp-path()}${common::GenerateGUID()}" /> 
    <mkdir dir="${generated-config-file-path}" /> 
    <!-- Copy --> 
    <copy file="${artifacts.dir}/web.config" tofile="${generated-config-file-path}/web.config" /> 
    <!-- Update web.config with values for our destination environment before we deploy. --> 
    <update-configuration-path file="${generated-config-file-path}\web.config" /> 
    <!-- Deploy using FTP --> 
    <connection id="ftp-transfer-connection" 
    server="${project.deployment.ftp.server}" 
    username="${project.deployment.ftp.user}" 
    password="${project.deployment.ftp.password}" 
    /> 

    <ftp connection="ftp-transfer-connection" 
     showdironconnect="false" 
     createdirs="true" 
     verbose="true" 
     exec="true" 
     logfiles="false" 
     > 

    <put type="bin" 
     localdir="${generated-config-file-path}" 
     remotedir="${project.deployment.path.remote}" 
     flatten="false" 
     > 
     <include name="**\web.config" /> 
    </put> 
    </ftp> 
    <delete dir="${generated-config-file-path}" /> 
</target> 


<target name="deploy"> 

    <connection id="ftp-transfer-connection" 
    server="${project.deployment.ftp.server}" 
    username="${project.deployment.ftp.user}" 
    password="${project.deployment.ftp.password}" 
    /> 

    <ftp connection="ftp-transfer-connection" 
     showdironconnect="false" 
     createdirs="true" 
     verbose="true" 
     exec="true" 
     logfiles="false" 
     > 

    <put type="bin" 
     localdir="${artifacts.dir}" 
     remotedir="${project.deployment.path.remote}" 
     flatten="false" 
     > 
     <include name="**\bin\**" /> 
     <include name=".\*.svc" /> 
     <include name=".\web.config" /> 
    </put> 
    </ftp> 
    <!-- Deploy configuration --> 
    <call target="deploy-configuration" /> 
</target> 
+2

Lưu ý rằng điều này dường như yêu cầu Tác vụ FTP NAnt được xuất bản tại đây: http://www.spinthemoose.com/~ftptask/ – JoshL

+0

@JoshL liên kết ở trên bị hỏng, cung cấp cho 404. –

+0

https://github.com /davidalpert/NAntFTPTask/blob/master/Tasks/ftptask.cs là một liên kết hiện tại hơn, http://blog.streamlinelogic.ca/2008/03/nant-ftp-task.html là một giao diện tốt. – robrich

3

Bạn có thể sử dụng WinSCP (ftp miễn phí khách hàng cho các cửa sổ) và tích hợp nó qua Nant tag "exec". Các thiết lập khá thẳng về phía trước và một khi nó được thực hiện nó hoạt động như một say mê.

+0

blog của bạn là 404'ing trên một cuộc gọi nội bộ đến một trang twitter – fiat

+0

Liên kết đã được sửa. Cảm ơn bạn đã gắn cờ. –

3

Có cùng nhu cầu bản thân mình, tôi đã phát triển một tác vụ tải lên FTP cơ bản về NAnt. Bạn có thể tìm thấy nó ở đây: https://sourceforge.net/projects/w3c-nant/

sử dụng Ví dụ (copy dán từ tài liệu API của trang web):

<ftpUpload host="ftp.myserver.com" username="root" password="r00t" todir="/"> 
    <fileset basedir="dist"> 
     <include name="**/*" /> 
     <exclude name="**/*.config" /> 
    </fileset> 
</ftpUpload> 

Tôi đã sử dụng nó trong xây dựng của tôi script địa phương để tải lên trang web của tôi để máy chủ trực tiếp của nó.

+0

Đã thử điều này và nó hoạt động hoàn hảo, nhờ Nikolaos. – akjoshi

4

Working WinSCP ví dụ ở đây:

<exec 
     verbose="true" 
     program="WinSCP.exe" 
     basedir="${WinSCP.Folder.Install}"> 
     <arg value="/command" /> 
     <arg value="/log=D:\Logs\WinSCP\winscp.log" /> 
     <arg value="/script=backup.winscp" /> 
     <arg line="/parameter ${YOUR_FILE}" /> 
    </exec> 

nơi backup.winscp trong exec trên là một tập tin với nội dung sau

option batch abort 
option confirm off 
open ftp://user:[email protected] 
put "%1%" 
exit 
1

Tôi muốn chia sẻ với bạn nhiệm vụ của tôi. Tôi chỉ sử dụng giá trị arg. Nó hoạt động ok. Đây là tập lệnh của tôi:

<property name="path.to.root" value="${project::get-base-directory()}\"/> 
<property name = "deploy.folder" value = "${path.to.root}Deploy" /> 

<!-- FTP --> 
<property name = "ftp.host" value = "127.0.0.1"/> 
<property name = "ftp.port" value="21"/> 
<property name = "ftp.user" value = "username"/> 
<property name = "ftp.password" value="mypass"/>   
<property name = "ftp.local.dir" value = "${deploy.folder}" /> 

<!-- WinSCP--> 
<property name = "winscp.run" value ="${path.to.root}\tools\WinSCP\WinSCP.com"/> 

<target description="Copy to the FTP server" name="ftp.copy"> 
    <exec program="${winscp.run}"> 
     <arg value="/command" /> 
     <arg value="option batch abort" /> 
     <arg value="option confirm off" /> 
     <arg value="option transfer binary" /> 
     <arg value="open ftp://${ftp.user}:${ftp.password}@${ftp.host}:${ftp.port}" /> 
     <arg value= '"put ""${ftp.local.dir}"""' />   
     <arg value="close" /> 
     <arg value="exit" /> 
    </exec>  
</target> 

Hãy vui vẻ!

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