我正在使用Capistrano v2.14.2
并尝试使用before
和after
deploy:create_symlink
挂钩,但它们似乎都无法解雇......
我收到了这个警告:
[Deprecation Warning] This API has changed, please hook 'deploy:create_symlink' instead of 'deploy:symlink'.
因此,我更新了代码以使用deploy:create_symlink
代替deploy:symlink
以下是我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")
这是输出的一小部分:
* 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_update
和deploy:update_code
的挂钩似乎都没有任何问题。
能够使用before
的{{1}}和after
个钩子发生了什么?
答案 0 :(得分:5)
我遇到了类似的问题,使用相同版本的Capistrano。我也使用capistrano-multistage,我很好奇,如果这导致问题的一些方法(尚未测试普通的Capistrano设置)。
基本上,如果你在deploy:symlink上挂钩到before / after触发器,它会告诉你使用deploy:create_symlink,但是deploy:symlink是实际运行的。如果我触发其中任何一个,它就不会触发。
我碰到了这篇文章,让我觉得我应该在“部署之后”触发,因为符号链接是我部署的最后一步:
http://blog.rememberlenny.com/2013/03/04/deploying-wordpress-with-capistrano-symlink-issue-fix/
以下是我解决部署的方法:
答案 1 :(得分:3)
更改
"after deploy:symlink"
到
"after deploy"