Capistrano:在部署之前:已发布的钩子需要知道发布目录

时间:2017-08-02 09:59:04

标签: composer-php capistrano

我正在创建一个运行慢composer install命令的任务,然后将current符号链接更改为指向新版本(因为我不希望我的新版本被破坏在打包的过程中它的生命分钟)。

before 'deploy:publishing', :composartisan do
    on roles(:app) do
        within fetch(:latest_release_directory) do
            execute "cd #{current_path} && composer dump-autoload && composer install && php artisan storage:link && php artisan migrate"
        end
    end
end

这不起作用,因为fetch(:latest_release_directory)返回当前版本,而不是我们正在构建并将在几分钟内发布的版本。

如何获取我们正在构建的版本的文件夹路径?

1 个答案:

答案 0 :(得分:0)

自己找到解决方案。我需要换两行:

  • within fetch(:latest_release_directory)成为within release_path
  • cd #{current_path}成为cd #{release_path}

这是完整的工作片段......

before 'deploy:publishing', :composartisan do
    on roles(:app) do
        within release_path do
            execute "cd #{release_path} && composer dump-autoload && composer install && php artisan storage:link && php artisan migrate"
        end
    end
end

有点咆哮,但为什么Capistrano网站上没有真正记录这个?我在StackOverflow上浏览其他Capistrano问题时偶然发现了我的解决方案。现在我回顾一下,我看到release_path仅在回滚页面http://capistranorb.com/documentation/getting-started/rollbacks/#deployreverting)的部署:还原部分中提及过一次。列出并解释所有可用变量的页面对我来说似乎是一个基本要素。

[不要成为开源的后座司机,当我觉得我的Capistrano技能足够可靠地写下它时,我会尽力分发文档并自行解决。] < / em>的

&LT; /咆哮&GT;