मेरे पास एक समान सेटअप है जहां मास्टर शाखा स्वचालित रूप से गिट पुश पर कैपिस्ट्रानो का उपयोग करके स्टेजिंग के रूप में तैनात की जाती है। उत्पादन शाखा से उत्पादन मैन्युअल रूप से तैनात किया जाता है।
सेटअप की आवश्यकता है कि आप सर्वर पर स्थानीय कैश प्रतिलिपि बनाने के लिए deploy.rb
में set :deploy_via, :remote_cache
का उपयोग करें। यदि अंतिम तैनाती के बाद से बदल दिया गया है तो यह नवीनतम कॉन्फ़िगरेशन के साथ कैपिस्ट्रानो चलाने में सक्षम होना है।
post-receive
हुक स्क्रिप्ट:
#!/bin/bash
while read oldrev newrev ref
do
if [ "$ref" = "refs/heads/master" ] ; then
echo "Master branch pushed, deploying to staging"
# seams to be set to "." for hooks, unset to make things more normal
unset GIT_DIR
# deploy path, where "current", "releases", "shared" etc are
DEPLOYDIR="/home/user/deploy/staging"
# default path for :deploy_via :remote_cache is shared/cached-copy
cd "$DEPLOYDIR/shared/cached-copy"
# update cache to pushed revision, will be done by capistrano too
git fetch origin && git fetch --tags origin && git reset --hard "$newrev"
# load rvm
source ~/.rvm/scripts/rvm
rvm use 1.9.2
# make sure correct gems are installed
# this will also create a .bundle directory
bundle install --gemfile Gemfile --path "$DEPLOYDIR/shared/bundle" --deployment --without development test
# run capistrano
# if you use deploy:migrations instead of deploy you should probably add
# after "deploy:migrations", "deploy:cleanup"
# to your deploy.rb
bundle exec cap staging deploy:migrations
fi
done
:remote_cache
बिना एक सरल सेटअप भी संभव है, लेकिन यह पिछले (वर्तमान में तैनात) विन्यास और तेजी के साथ Capistrano चलेंगे में थोड़ा और अधिक नाजुक होने के लिए।
post-receive
हुक स्क्रिप्ट:
#!/bin/bash
while read oldrev newrev ref
do
if [ "$ref" = "refs/heads/master" ] ; then
echo "Master branch pushed, deploying to staging"
# seams to be set to "." for hooks, unset to make things more normal
unset GIT_DIR
source ~/.rvm/scripts/rvm
rvm use 1.9.2
cd /home/user/deploy/staging/current && bundle exec cap staging deploy:migrations
fi
done
स्रोत
2011-09-27 13:35:37
धन्यवाद, यह वही है जो मुझे चाहिए! – sethvargo
मैं थोड़ा सा झुका हुआ हूं कि मेरा जवाब नहीं चुना गया था, क्योंकि अद्यतन संस्करण में गिट-तैनाती का एक लिंक शामिल है, जो लेखक पूछता था ("शुद्ध गिट वर्कफ़्लो हेरोोकू के समान" - और एक स्पष्टीकरण यह टिप्पणियों में कैसे काम करता है), लेकिन मैं आपको एक अपवित्र भी दूंगा। :) – bhamby
गिट-तैनाती एक दिलचस्प प्रोजेक्ट की तरह दिखती है, लेकिन ऐसा लगता है कि रूबी + कैपिस्ट्रानो जोर है। मुझे लगता है कि सेठ.वर्गो के सवाल का मुख्य अभियान था, गिट गतिविधि के आधार पर किसी के पास स्वचालित रूप से कार्यवाही कैसे होती है। उस प्रकाश में, गिट हुक के बारे में बुनियादी ज्ञान होने पर अधिक आम तौर पर लागू होता है। उपवास के लिए धन्यवाद। – semperos