Capistrano从多个git存储库部署

时间:2010-12-18 03:32:16

标签: ruby-on-rails git repository capistrano

我有2台服务器。托管的rails app服务器和git存储库服务器。这两台服务器通过互联网连接(不在同一台主机上)。

rails项目与capistrano一起部署。 有时远程git存储库已关闭,我无法部署最新的更新。 我还在rails服务器上克隆了存储库,因此当远程存储库服务器关闭时,我可以将我的更改推送到rails服务器上的存储库。

配方是什么,所以我可以选择要获取的存储库。

由于

1 个答案:

答案 0 :(得分:1)

解决此问题的一种方法是即时设置:repository变量。

也许设置一个在deploy:update之前调用的任务,该任务使用git ls-remote #{repository} #{branch}检查存储库是否存在并进行响应。

像这样(这是未经测试的,可能无效!)

set :repos, ["git@github.com:whatever/project.git", "git@yourserver.com/repos/project.git"]
set :branch, "master"

task :select_repository do
  repos.each do |repo|
    if capture("git ls-remote #{repo} #{branch}") =~ /refs\/heads\/#{branch}/
      set :repository, repo
      return true
    end
  end
end

before "deploy:update" do
  select_repository
end