Развертывание Capistrano из нескольких хранилищ git - PullRequest
2 голосов
/ 18 декабря 2010

У меня 2 сервера.Размещенный сервер приложений rails и сервер репозитория git.Два сервера подключены к Интернету (не на одном хосте).

Проект rails развернут с помощью capistrano.Иногда удаленный репозиторий git не работает, я не могу развернуть последнее обновление.Я также клонировал хранилище на сервере rails, поэтому, когда удаленный сервер хранилища не работает, я могу вместо этого отправить свои изменения в хранилище на сервере rails.

Какой рецепт, чтобы я мог выбрать, какой репозиторий получить.

Спасибо

1 Ответ

1 голос
/ 18 декабря 2010

Одним из способов решения этой проблемы является установка переменной :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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...