一些Capistrano部署挂钩无法正常工作

时间:2013-04-04 20:42:58

标签: ruby deployment capistrano

我正在使用Capistrano v2.14.2并尝试使用beforeafter 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_updatedeploy:update_code的挂钩似乎都没有任何问题。

能够使用before的{​​{1}}和after个钩子发生了什么?

2 个答案:

答案 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/

以下是我解决部署的方法:

  • 将我的“部署前:符号链接”触发器移至“部署后:finalize_update”(因为这是上一个任务,实际上是触发)
  • 将“部署后:符号链接”触发器移至“部署后”

答案 1 :(得分:3)

更改

"after deploy:symlink"

"after deploy"