使用Capistrano 3部署git子模块

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Capistrano 3部署git子模块相关的知识,希望对你有一定的参考价值。

我的项目回购包括Wordpress作为git子模块。通过Capistrano 3进行部署时,子模块目录是贫瘠的。

project
--wordpress
--images

我正在使用git和:deploy_via, :remote_cache

如何告诉Capistrano还部署子模块?

答案

我找到了一个来自corny的优秀脚本,它覆盖了Capistrano中的git任务。

将此脚本放在lib/capistrano/tasks/git.cap中并正常使用cap stage deploy

https://gist.github.com/corny/7459729

# Save this file as lib/capistrano/tasks/git.cap

namespace :git do
  desc 'Copy repo to releases'
  task create_release: :'git:update' do
    on roles(:all) do
      with fetch(:git_environmental_variables) do
        within repo_path do
          execute :git, :clone, '-b', fetch(:branch), '--recursive', '.', release_path
        end
      end
    end
  end
end
另一答案

可能与capistrano v3 deploy git repository and its submodules重复。

在capistrano 3.1.x及更高版本中,您可以实现自己的SCM策略。有一个可用的宝石,有助于git子模块,请参阅:https://github.com/i-ekho/capistrano-git-submodule-strategy

注意:如果您已尝试使用默认的git策略,则repo文件夹可能有问题。只需转到deploy目录并将其删除,然后再次运行cap deploy来修复它。

以上是关于使用Capistrano 3部署git子模块的主要内容,如果未能解决你的问题,请参考以下文章

使用 capistrano 从不同的 git 分支进行部署

加速资产:使用 Rails 3.1/3.2 Capistrano 部署预编译

如何配置 Capistrano 以从本地 Git 存储库进行部署?

Capistrano使用rvm和git进行部署[git release fail]

在 Capistrano 中部署 Git 子目录

使用 Capistrano 简化部署