2014-07-27 7 views
5

मैं कैपिस्ट्रानो (v 3.2.1) के साथ एक पूर्ण नोब हूं, इसलिए कृपया मेरी, गलती, बेकारता को क्षमा करें। मैं एक PHP ऐप तैनात कर रहा हूं और तैनाती से पहले संगीतकार स्थापित करना चाहता हूं: symlink: रिलीज कार्य (केवल रोलबैक नहीं चलाते समय)तैनाती से पहले कार्य चलाना: symlink: साझा कैपिस्ट्रानो 3

मुझे नव निर्मित रिलीज निर्देशिका तक पहुंचने में समस्या हो रही है क्योंकि मुझे इसकी आवश्यकता है इसमें सीडी करने और संगीतकार चलाने में सक्षम (और कुछ अन्य वस्तुओं को भी चलाएं)। मैं वर्तमान में है;

namespace :deploy do 

    namespace :symlink do 

     desc 'Run composer' 
     task :runcomposer do 
      on roles :all do 

       execute "cd '#{current_release}' && composer install" 
       execute "cd '#{current_release}' && ln -s /sites/shared/index.php index.php" 
      end 
     end 

     before :release, :runcomposer 

    end 

end 

{current_release} वैरिएबल इस बिंदु पर मौजूद नहीं लगता है (जो निर्देशिका जहां Git पुल (उचित टाइमस्टैम्प के साथ) चलाया जाता है निश्चित रूप से/विज्ञप्ति/निर्देशिका के अंदर बनाया गया है के रूप में अजीब है लेकिन मैं मिलता है 'अपरिभाषित स्थानीय चर या विधि "current_release"'

वहाँ एक रास्ता है कि मैं इस नए रिलीज निर्देशिका निर्धारित कर सकते हैं इससे पहले कि 'वर्तमान' सिमलिंक इसे बताया है है? आप पहले से बहुत बहुत शुक्रिया।

उत्तर

0

मैंने इसे अपने प्रश्न पर एक टिप्पणी के रूप में छोड़ दिया था, लेकिन फिलहाल, यह एकमात्र उत्तर है जिसे मैं पा सकता हूं, इसलिए मैं इसे बढ़ावा दे रहा हूं जवाब देने के;

ठीक है, इसलिए मैंने इसे करने का एक संभावित तरीका निर्धारित किया है, लेकिन यह भयानक लगता है। यहां तक ​​कि मेरे जैसे एक निरपेक्ष शुरुआत के लिए:

newreleasedir = capture('ls -t /sites/releases | head -1') 

तो

execute "cd /sites/releases/#{newreleasedir} && composer install" 

किसी कृपया मुझे बताओ कि भयानक और मैं इसे कैसे करना चाहिए :)

2

उपयोग composer extension

# Capfile 
require 'capistrano/composer' 

और डिफ़ॉल्ट रूप से दो कार्य योजनाबद्ध होंगे

before 'deploy:updated', 'composer:install' 
before 'deploy:reverted', 'composer:install' 

डिफ़ॉल्ट कार्य

Rake::Task['deploy:reverted'].prerequisites.delete('composer:install') 

आधिकारिक दस्तावेज़ पृष्ठ पर और अधिक पढ़ें में से एक निकाल रहा है।

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