nant

2010-05-07 11 views
10

का उपयोग करके एफ़टीपी के साथ फ़ाइल अपलोड करें मेरे पास एक एनएएनटी स्क्रिप्ट है जिसका उपयोग मैं अपनी .NET प्रोजेक्ट बनाने के लिए करता हूं, और मैं यह देखने के लिए देख रहा हूं कि परिणामस्वरूप असेंबली को किसी FTP कार्य का उपयोग करके कुछ दूरस्थ फ़ोल्डर में अपलोड करने का कोई तरीका है या नहीं।nant

मुझे ऑनलाइन कोई अच्छा उदाहरण नहीं मिला, और मुझे आश्चर्य है कि अगर कोई जानता है कि यह कैसे करना है, तो यह बिल्कुल करने योग्य है।

एफवाईआई: अगर मैं इसे कोई फर्क नहीं पड़ता, तो मैं इसे विंडोज़ मशीन पर चला रहा हूं।

उत्तर

5

आप एक NAnt <exec> कार्य में WinSCPconsole application के रूप में इस्तेमाल कर सकते हैं। WinSCP का उपयोग करने से आपको synchronization जैसी अतिरिक्त उपहारों तक पहुंच मिल जाएगी।

यही वह है जो हम कर रहे हैं और यह एक आकर्षण की तरह काम करता है।

2

हम इस (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

ध्यान दें कि इसमें प्रकाशित एनएएनटी एफ़टीपी टास्क की आवश्यकता होती है: 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 (विंडोज़ के लिए मुफ्त FTP क्लाइंट) का उपयोग करें और nant "कार्यकारी" टैग के माध्यम से एकीकृत कर सकते हैं। सेटअप काफी सीधे आगे है और एक बार यह हो जाने पर यह एक आकर्षण की तरह काम करता है।

+0

आपका ब्लॉग एक ट्विटर पेज – fiat

+0

पर एक आंतरिक कॉल पर 404'ing है लिंक को ठीक कर दिया गया है। ध्वजांकित करने के लिए धन्यवाद। –

3

मुझे वही आवश्यकता होने के बाद, मैंने एक बुनियादी एफ़टीपी अपलोड NAnt कार्य विकसित किया। आप इसे यहाँ पा सकते हैं: 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]host.com 
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> 

मज़े करो!

संबंधित मुद्दे