2013-04-04 55 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