【问题标题】:Some Capistrano deployment hooks not working一些 Capistrano 部署挂钩不起作用
【发布时间】:2013-03-27 02:59:05
【问题描述】:

我正在使用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 的挂钩似乎都可以正常工作。

能够为deploy:create_symlink 使用beforeafter 挂钩发生了什么?

【问题讨论】:

    标签: ruby deployment capistrano


    【解决方案1】:

    我在使用相同版本的 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”(因为这是之前的任务,它实际上会触发)
    • 将“部署后:符号链接”触发器移至“部署后”

    【讨论】:

      【解决方案2】:

      改变

      "after deploy:symlink"
      

      "after deploy"
      

      【讨论】:

      • 这没有回答问题。无论如何,对于 Capistrano 3 的 2015 年 4 月,before 'check:linked_files', :do_stg {} 之类的命令可以正常工作。检查(可能)工作的一种方法是使用bundle exec cap -T 获取挂钩列表。
      猜你喜欢
      • 1970-01-01
      • 2012-04-14
      • 1970-01-01
      • 2021-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-04
      相关资源
      最近更新 更多