2010-05-07 7 views
10

.NET 프로젝트를 빌드하는 데 사용하는 NAnt 스크립트가 있으며 FTP 태스크를 사용하여 일부 원격 폴더에 결과 어셈블리를 업로드하는 방법이 있는지 찾고 있습니다.Nant를 사용하여 FTP로 파일 업로드

저는 온라인에서 좋은 예를 찾을 수 없었습니다. 어떻게 할 수 있는지 아는 사람이 있는지 궁금합니다.

FYI : Windows 시스템에서 차이점이 있다면 실행하고 있습니다.

답변

5

NAnt <exec> 작업에서 WinSCPconsole application으로 사용할 수 있습니다. WinSCP를 사용하면 synchronization과 같은 추가 제품을 이용할 수 있습니다.

그건 우리가하고있는 일이며, 매력처럼 작동합니다.

2

우리는 (은 NAnt-0.86-β1) 같은 것을 사용 :

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

여기에 NAnt FTP Task가 필요합니다. http://www.spinthemoose.com/~ftptask/ – JoshL

+0

@JoshL 위의 링크가 깨졌습니다. 404. –

+0

https://github.com /davidalpert/NAntFTPTask/blob/master/Tasks/ftptask.cs가 더 최신 링크입니다. http://blog.streamlinelogic.ca/2008/03/nant-ftp-task.html은 잘 설명되어 있습니다. – robrich

3

당신은 WinSCP에 (Windows 용 무료 FTP 클라이언트)를 사용하고 NANT "간부"태그를 통해 통합 할 수 있습니다. 셋업은 상당히 정직하며 한번 완료되면 매력처럼 작동합니다.

+0

블로그가 트위터 페이지에 대한 내부 호출시 404'ing입니다 – fiat

+0

링크가 수정되었습니다. 신고 해 주셔서 감사합니다. –

3

나 자신도 같은 필요성을 가지고 있었기 때문에 기본적인 FTP 업로드 NAnt 작업을 개발했습니다. 당신은 여기를 찾을 수 있습니다 (사이트의 API 문서에서 붙여 복사) https://sourceforge.net/projects/w3c-nant/

사용 예제 :

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

내가 이미 라이브 서버에 내 사이트를 업로드하는 내 로컬 빌드 스크립트에서 사용합니다. 여기

+0

시도해 보니 완벽하게 작동합니다. 감사합니다. Nikolaos. – akjoshi

4

작업 WinSCP에 예 : 위 간부의

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

backup.winscp 내가 당신과 함께 내 작업을 공유하고 싶은 다음과 같은 내용

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

있는 파일입니다. 방금 arg 값을 사용합니다. 괜찮아. 내 스크립트는 다음과 같습니다.

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

재미있게 보내십시오!

관련 문제