2014-07-27 14 views
5

Jestem absolutnym noobem z Capistrano (v 3.2.1), więc proszę, wybacz mi, err, bezużyteczność. Wdrażam aplikację PHP i chcę uruchomić instalację kompilatora przed uruchomieniem: dowiązanie symboliczne: zwolnienie (tylko wtedy, gdy nie jest uruchamiany rollback).Uruchomione zadanie przed wdrożeniem: symlink: shared capistrano 3

Mam problemy z dostępem do nowo utworzonego katalogu wydania, ponieważ jest to potrzebne. w stanie włączyć się do niego i uruchomić kompozytor (i uruchomić także kilka innych elementów). Obecnie mam;

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 

Opcja {current_release} zmienna nie wydaje się istnieć w tym momencie (co jest dziwne w katalogu, w którym prowadzony jest git ciągnąć zdecydowanie został utworzony w katalogu/releases/(z odpowiednim znacznikiem czasu) ale otrzymuję „niezdefiniowane zmiennej lokalnej lub metoda«current_release»”

Czy istnieje sposób mogę określić ten nowy katalog zwalniający przed „aktualny” symlink jest skierowany na to? Dziękuję z góry.

Odpowiedz

0

Zostawiłem to jako komentarz do mojego pytania, ale w tej chwili jest to jedyna odpowiedź, którą mogę znaleźć, więc promuję ją do odpowiedź;

OK, więc ustaliłem możliwy sposób na zrobienie tego, ale wydaje się okropne. Nawet dla początkującego jak ja:

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

następnie

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

ktoś proszę mi powiedzieć, że to straszne i jak mam to robić :)

2

Korzystając composer extension

# Capfile 
require 'capistrano/composer' 

Domyślnie planowane są dwa zadania:

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

Usunięcie jednego z zadań domyślnych

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

Czytaj więcej na oficjalnej stronie dok.

Powiązane problemy