我在团队内部建立了一个远程git仓库,用于集中式开发。然而,我们目前用于部署应用程序的生产服务器上并没有运行git。我们想使用capistrano来部署应用程序,该如何设置我们的部署脚本以从远程git仓库“拉取”代码?
换句话说,我能否像这样做?
set :repository, "myserver.com/git/#{application}.git"
set :scm, "git"
set :deploy_via, :copy
我在团队内部建立了一个远程git仓库,用于集中式开发。然而,我们目前用于部署应用程序的生产服务器上并没有运行git。我们想使用capistrano来部署应用程序,该如何设置我们的部署脚本以从远程git仓库“拉取”代码?
换句话说,我能否像这样做?
set :repository, "myserver.com/git/#{application}.git"
set :scm, "git"
set :deploy_via, :copy
你的问题中的解决方案基本正确。但是,你需要以稍微不同的方式指定你的git仓库。你需要:
set :repository, "someuser@somehost:/home/myproject"
set :scm, "git"
set :deploy_via, :copy
在 Capistrano gem 的 lib/capistrano/recipes/deploy/scm/git.rb
下有更多设置 git 部署的示例。
当使用 copy
部署策略时,Capistrano 会将你的 git repo 克隆到本地机器上的 /tmp
目录中,将结果打包并压缩成 tar 文件,然后通过 sftp 将其传输到服务器。复制策略还支持通过 scp 进行复制,但没有办法在不对源代码进行一些操作的情况下告诉它这样做。
你尝试过类似这样的东西吗?
set :repository, "myserver.com/git/#{application}"
set :scm, :none
set :deploy_via, :copy
我从未尝试过这个,但这似乎是你需要采取的方法。在Capistrano RDocs中可以获得更多的见解。