2010-01-23 15 views
123

आमतौर पर कैपिस्ट्रानो का उपयोग करते समय, मैं एक तैनात आवेदन से पुरानी रिलीज को मैन्युअल रूप से हटा दूंगा। मैं समझता हूं कि आप cap deploy:cleanup चला सकते हैं लेकिन यह अभी भी 5 रिलीज छोड़ देता है। क्या यह इसका उद्देश्य है? पुरानी रिलीज को केवल 1 पिछले तैनाती के लिए साफ करने का कोई और तरीका है?Capistrano - पुरानी रिलीज साफ़ करें

+0

चलाने के लिए यह कभी एक अच्छा विचार कुछ पूर्व में जारी हुए रखने के लिए है, तो अगर आप पिछले तैनाती बड़ी गलती आप तेजी से Capistrano साथ रोलबैक कर सकते हैं (टोपी तैनाती: रोलबैक) शामिल करने के लिए पिछली रिलीज जब तक आप इसे ठीक नहीं करते। – damoiser

उत्तर

150

आप :keep_releases वैरिएबल का उपयोग 5 के डिफ़ॉल्ट को ओवरराइड करने के लिए कर सकते हैं। this देखें।

+0

ग्रेट। यह वहीं है जिसे मैं ढूंढ रहा था। धन्यवाद। – Josh

+4

आपका स्वागत है! आप अभी जवाब स्वीकार कर सकते थे! :-) – jcrossley3

+2

@ जोश, निश्चित रूप से, इस समस्या को स्वीकार करते हैं यदि यह आपकी समस्या का समाधान करता है। आप दोनों इस तरह से प्रतिनिधि अंक प्राप्त करते हैं। –

126

आप इस स्वचालित रूप से आपके deploy.rb

set :keep_releases, 1 
after "deploy:update", "deploy:cleanup" 

में इस सेटिंग को अतीत में से कर सकता है (मैं वास्तव में नहीं जानता कि कौन-सा संस्करण) इस कॉलबैक डिफ़ॉल्ट था, लेकिन बाद डेवलपर छोड़ने का फैसला किया यह निर्णय लेने के लिए उपयोगकर्ता को। कैपिस्ट्रानो 3 में इसे डिफ़ॉल्ट तैनाती प्रवाह में वापस जोड़ा गया था।

+1

धन्यवाद, डिएगो। आपका उत्तर Capistrano v2.14.1 में सही ढंग से काम करता है। – scarver2

+1

धन्यवाद @ डिएगो ने वास्तव में मदद की! – gouravtiwari21

+1

ऐसा लगता है [कैपिस्ट्रानो 3 कॉल 'तैनाती: तैनाती प्रवाह के हिस्से के रूप में क्लीनअप'] (https://github.com/capistrano/capistrano/blob/690afc0c5c3c43d2920b0bfdeb9323c286b12106/lib/capistrano/tasks/deploy.rake#L23)। – Dennis

38

पिछले 3 को छोड़कर उदाहरण के लिए आप चला सकते हैं सभी विज्ञप्ति को हटाना चाहते हैं:

cap deploy:cleanup -s keep_releases=3 
+3

काम नहीं करता है। 'विकल्प पार्सर :: अवैध विकल्प: अमान्य विकल्प: एस' – Snowman

0

मैं एक ऐसी ही समस्या थी। मैं सामान्य तैनाती के लिए 5 रिलीज रखना चाहता था, लेकिन कुछ स्थितियों के लिए सभी पिछली रिलीज को हटाने में सक्षम होना आवश्यक था।

मैं इसे एक कस्टम कार्य के साथ करने में सक्षम था। फ़ाइल lib/capistrano/tasks/cleanup.rake बनाएं और निम्न कोड जोड़ें।

desc "Remove all but the last release" 
task :cleanup_all do 
    set :keep_releases, 1 
    invoke "deploy:cleanup" 
end 

उपयोग bundle exec cap staging cleanup_all या cap staging cleanup_all

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