2010-04-21 17 views
9

मैं अपने PHP वेब अनुप्रयोगों में से किसी एक की तैनाती को व्यवस्थित करने के लिए एक तरीका तलाशने की प्रक्रिया में हूं (यदि यह इस पर काम करता है तो मैं इसे अन्य ऐप्स पर रोल कर दूंगा)।Mercurial स्वचालित तैनाती

मुझे यह देखने की तरह है: http://www.springloops.com/, लेकिन यह एसवीएन है और हम Mercurial का उपयोग कर रहे हैं।

दुर्भाग्यवश हमारे पास हमारे वर्तमान सर्वर तक कोई खोल पहुंच नहीं है, इसलिए कुछ भी जो ftp पर काम करता है, सबसे अच्छा होगा, अगर किसी के पास कोई विचार है?

उत्तर

9

आप एक हुक से Mercurial के hg archive कमांड का उपयोग करना चाहेंगे। यह आपके द्वारा इंगित संशोधन (टैग, इत्यादि के माध्यम से) का स्नैपशॉट लेता है और फिर इसे निर्यात करता है।

अपने "उत्पादन" भंडार के hgrc में आप कुछ इस तरह हो सकता है:

[hooks] 
changegroup = ./doDeploy.sh 

और फिर ./doDeploy.sh उस में होगा:

hg archive -r tip /tmp/deployme 
ftp /tmp/deployme ftp://remoteserver 

आप सभी को हल करने के लिए होने पहुंच जाएंगे फाइल अनुमतियों जैसे छोटे ग्लिच, जैसे रेपो से हटाए गए फाइलें, लेकिन सर्वर पर अभी भी मौजूद हैं, लेकिन सामान्य रूप से यह एक सिस्टम के लिए एक अच्छा ढांचा प्रदान करता है कि, रिलीज मैनेजर द्वारा इसे स्वचालित रूप से अपलोड किए जाने पर परिवर्तनों को स्वचालित रूप से अपलोड करने पर जैसा जीवित प्रणाली के लिए नैपशॉट।

+0

मैं विंडोज सिस्टम पर मान रहा हूं कि यह सिर्फ बल्लेबाजी फ़ाइल होगा? – richzilla

+0

यह निश्चित रूप से संभव है, या आप इसे पाइथन में निष्क्रिय कर सकते हैं। विवरण के लिए मुफ्त Mercurial पुस्तक के अध्याय 10 देखें। –

+0

संग्रह, क्योंकि यह पूरे भंडार निर्यात करता है, आईएमएचओ निरंतर तैनाती (स्थानांतरण का आकार) के लिए सबसे अच्छा तरीका नहीं है –

2

यह मेरा 5 सेंट है: उत्तर का एफटीपी हिस्सा केवल उपनिर्देशिका के बिना परियोजनाओं के लिए काम करता है (एफ़टीपी उन्हें पसंद नहीं करता है) यदि आप वास्तव में सिंक में सभी को रखना चाहते हैं तो यह मेरी sh स्क्रिप्ट है (यह एलएफटीपी का उपयोग करता है, -e विकल्प फ़ाइलों दूर से जो अब स्थानीय स्तर पर मौजूद हैं हटा देता है):

#!/bin/sh 
rm -rf /home/user/tmp/deploy/* 
hg archive -r tip /home/user/tmp/deploy/ 
lftp -u username,password your.ftpsite.com << END_SCRIPT 
set ftp:ssl-allow no 
cd httpdocs/yoursite/ 
mirror -R -e --only-newer --log=/home/user/lftp.log /home/user/tmp/deploy . 
END_SCRIPT 
echo "#--- $(date)" >> /home/user/lftp.log 
exit 0 
संबंधित मुद्दे