Некоторые перехватчики развертывания Capistrano не работают

Я использую 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

Вот snipplet моего 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")

Вот 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_update и deploy:update_code кажутся работающими без каких-либо проблем.

Что случилось с возможностью использовать before и after hooks для deploy:create_symlink?

Ответ 1

Я сталкиваюсь с аналогичной проблемой, используя ту же версию Capistrano. Я также использую capistrano-multistage, и мне любопытно, если это вызывает проблему как-то (пока не проверили простую настройку Capistrano).

В принципе, если вы подключаетесь к триггеру до/после развертывания: symlink, он сообщает вам использовать deploy: create_symlink, но развернуть: symlink - это то, что на самом деле выполняется. Если я запускаю на любом из них, он не срабатывает.

Я столкнулся с этой статьей, которая заставила меня думать, что я должен запускать "после развертывания" вместо этого, поскольку symlink - последний шаг в развертывании для меня:

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

Вот как я решил свое развертывание:

  • Переместил мой "до развертывания: symlink" триггер до "после развертывания: finalize_update" (поскольку это была предыдущая задача, и она фактически запускается)
  • Перемещено мое "после развертывания: symlink" триггер "после развертывания"

Ответ 2

изменить

"after deploy:symlink"

к

"after deploy"