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



>我正在执行一个任务,在current符号链接更改为指向新版本之前运行慢速composer install命令(因为我不希望我的新版本在获取打包时在其生命周期的第一分钟被破坏(。

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)返回当前版本,而不是我们正在构建并在几分钟后发布的版本。

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

自己找到了解决方案。我需要更改 2 行:

  • 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

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

[为了不做一个在开源方面婊子的后座司机,当我觉得我的 Capistrano 技能足够忍者可以可靠地写它时,我会努力分叉文档并自己修复它。

相关内容

  • 没有找到相关文章

最新更新