Развертывание определенной ветви git через capistrano на промежуточном сервере
У меня есть мой master
ветвь, которая используется для развертывания на промежуточном сервере. И у меня есть stable
ветвь, которая используется для развертывания на производственном сервере. Сценарий capistrano, который я использую, настроен таким образом.
Текущий рабочий процесс: всякий раз, когда возникает проблема с производством, я выполняю stable
ветвь, исправить вещи, совершить это, объединить его с stable
а затем развернуть в производство.
Это не дает мне возможности протестировать это исправление ошибки (произошло в этой ветви исправлений) на моем промежуточном сервере. В идеале то, что я хочу, было бы:
Требуемый рабочий процесс: всякий раз, когда возникает проблема с производством, я выполняю stable
ветвь, исправить вещи, совершить это, объединить его с master
разверните и протестируйте исправление на промежуточном сервере, проверьте, работает ли оно, а затем объедините эту ветвь исправлений с stable
и развернуть это производство.
Как я могу сделать это правильно с Capistrano? Пожалуйста помоги.
2 ответа
Отказ от ответственности: простите меня, если я неправильно понял ваш вопрос, но я думаю, что вы уже ответили на свой вопрос.
Ваш рабочий процесс Git - это просто ваш рабочий процесс Git. На самом деле не имеет ничего общего с Капистрано. Capistrano будет извлекать все, что вы хотите, это зависит от вас, как вы хотите объединить и разветвить репо, чтобы получить его к точке развертывания.
Исходя из того, что вы сказали, я предполагаю, что у вас уже настроены этапы ограничения для развертывания правильной ветви, но если вы этого не сделаете, есть пример ниже. Это позволит получить разные ветви для каждого типа развертывания.
deploy.rb
set :stages, %w(staging production)
set :default_stage, "staging"
deploy / staging.rb #cap deploy
set :branch, 'master'
deploy / production.rb #cap production deploy
set :branch, 'stable'
Вот последовательность действий, которая позволит вам протестировать этапы и при этом использовать существующую конфигурацию развертывания Capistrano. Здесь я предполагаю, что ваша промежуточная ветвь впереди главного и что Capistrano настроен с многоступенчатым расширением.
Из мастера создайте ветку оперативного исправления, я использую соглашение об именах для оперативного исправления, например hotfix-20121203
git checkout -b hotfix-20121203
объединить вашу ветку исправлений в стадии подготовки, развертывания и тестирования
git checkout staging git merge hotfix-20121203 cap staging deploy
объединить ветку исправлений с мастером, развернуть и протестировать мастер
git checkout master git merge hotfix-20121203 cap production deploy