2014-07-27 67 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') 

之一。

相關問題