我有2台服务器。托管的rails app服务器和git存储库服务器。这两台服务器通过互联网连接(不在同一台主机上)。
rails项目与capistrano一起部署。 有时远程git存储库已关闭,我无法部署最新的更新。 我还在rails服务器上克隆了存储库,因此当远程存储库服务器关闭时,我可以将我的更改推送到rails服务器上的存储库。
配方是什么,所以我可以选择要获取的存储库。
由于
答案 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