2014-07-27 65 views
5

我是Capistrano(v 3.2.1)的绝对新手,请原谅我的错误,无用。我正在部署一个PHP应用程序,并希望在部署之前运行作曲家安装:symlink:release任务(仅在未运行回滚时)部署前运行任务:符号链接:共享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变量似乎并没有在这一点上存在(这是奇怪的是,其中的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') 

之一。

相关问题