2014-07-27 15 views
5

Ich bin ein absoluter Anfänger mit Capistrano (v 3.2.1), also bitte vergib mir, äh, Nutzlosigkeit. Ich bin eine PHP-Anwendung bereitstellen und Composer-Installation vor der Bereitstellung ausführen möchten: Symlink: Freigabe Aufgabe (nur wenn keine Rollback ausgeführt wird)Laufende Aufgabe vor der Bereitstellung: symlink: shared capistrano 3

Ich habe Probleme beim Zugriff auf das neu erstellte Release-Verzeichnis, wie ich es brauche in der Lage zu cd und führen Sie Composer (und ein paar andere Dinge auch laufen). Ich habe derzeit;

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 

Der {current_release} Variable scheint nicht an diesem Punkt zu bestehen (was als das Verzeichnis seltsam ist, wo die Git-Pull im/releases/Verzeichnis definitiv erstellt (mit dem entsprechenden Zeitstempel ausgeführt wird wurde) aber ich bekomme ‚undefined lokale Variable oder Methode‚current_release‘‘

gibt es eine Weise, die ich dieses neue Release-Verzeichnis bestimmen kann, bevor die ‚aktuelle‘ Symlink an darauf hingewiesen wird? Vielen Dank im Voraus.

Antwort

0

Ich hatte dies als Kommentar zu meiner Frage hinterlassen, aber im Moment ist es die einzige Antwort, die ich finden kann, also promote ich es zu einem Antworten;

OK, also habe ich einen möglichen Weg gefunden, es zu tun, aber es scheint schrecklich. Selbst für einen absoluten Anfänger wie mich:

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

dann

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

mir bitte jemand sagen, das ist schrecklich und wie soll ich es tun :)

2

Verwenden composer extension

# Capfile 
require 'capistrano/composer' 

Und standardmäßig werden zwei Aufgaben geplant

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

Entfernen eines der Standard-Aufgaben

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

mehr auf der offiziellen doc Seite lesen.

Verwandte Themen