开发者

Capistrano deploy from multiple git repository

I have 2 servers. The hosted rails app server and git repository server. The two servers are connected with internet (not on the same host).

The rails project are deployed with capistrano. Sometimes the remote git repository is down, I could not deploy the latest update. I also have cloned repository on the rails server, so when the remote repository server 开发者_Go百科is down, I could push my changes to the repository on rails server instead.

What is the recipe so I could choose which repository to fetch.

Thanks


One way to approach this would be to set the :repository variable on the fly.

Perhaps set up a task which gets called before deploy:update which uses git ls-remote #{repository} #{branch} to check whether the repository is there and responding.

Something like this (this is untested and may not work!):

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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜