2014-07-27 2 views
5

Я абсолютный noob с Capistrano (v 3.2.1), поэтому, пожалуйста, простите мою, ошибочную, бесполезную. Я развертываю приложение PHP и хочу выполнить установку компоновщика перед развертыванием: symlink: задача выпуска (только когда не выполняется откат)Запуск задачи перед развертыванием: symlink: shared capistrano 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} переменная, кажется, не существует в этой точке (что странно, как каталог, в котором мерзавец тянуть запускается определенно была создана в/высвобождает/директории (с соответствующей отметкой времени) но я получаю «неопределенные локальные переменный или метод„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') 

Читать далее на официальной странице док.

Смежные вопросы