2013-04-04 56 views
10

我使用Capistrano v2.14.2並試圖使用beforeafter掛鉤deploy:create_symlink,但他們都不到擊發......一些Capistrano的部署掛鉤不工作

我得到這樣的警告:

[Deprecation Warning] This API has changed, please hook 'deploy:create_symlink' instead of 'deploy:symlink'.

所以我更新了我的代碼中使用deploy:create_symlink代替deploy:symlink

這裏是一個SN我deploy.rb

namespace :foo do 
    task :start do 
     puts "starting foo..." 
    end 

    task :stop do 
     puts "stoping foo..." 
    end 
end 

before('deploy:create_symlink', "foo:stop") 
after('deploy:create_symlink', "foo:start") 

這裏ipplet是輸出的snipplet:

* 2013-04-04 13:34:27 executing `deploy:symlink' 
    * executing "rm -f /web/example.com/current && ln -s /web/example.com/releases/20130404203425 /web/example.com/current" 
    servers: ["app1"] 
    [app1] executing command 
    command finished in 467ms 

無鉤被稱爲...

掛鉤deploy:finalize_updatedeploy:update_code似乎都工作,沒有任何問題。

發生了什麼事情能夠使用beforeafter掛鉤deploy:create_symlink

回答

5

我遇到了類似的問題,使用相同版本的Capistrano。我也在使用capistrano-multistage,我很好奇這是否會導致問題出現(尚未測試普通Capistrano安裝程序)。基本上,如果您在deploy:symlink中掛接到之前/之後的觸發器,它會告訴您使用deploy:create_symlink,但部署:symlink是實際運行的。如果我觸發其中任何一個,它都不會觸發。

我碰到這篇文章,這讓我想,我應該觸發上運行「之後部署」來代替,因爲符號鏈接是在部署的最後一步對我來說:

http://blog.rememberlenny.com/2013/03/04/deploying-wordpress-with-capistrano-symlink-issue-fix/

這是我如何解決我的部署:

  • 動了我的「部署前:符號鏈接」觸發「後部署:finalize_update」(因爲這是以前的任務,它實際上觸發)
  • 動了我的「一壓腳提升部署:符號鏈接」觸發 「後部署」
3

變化

"after deploy:symlink" 

"after deploy" 
+0

這不回答這個問題。無論如何,至於2015年4月的Capistrano 3,像'before'check:'linked_files',:do_stg {}'這樣的命令工作正常。檢查(可能)工作的一種方法是用'bundle exec cap -T'獲取鉤子列表。 – 2015-04-15 07:07:07