Развертывание определенной ветви 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 настроен с многоступенчатым расширением.

  1. Из мастера создайте ветку оперативного исправления, я использую соглашение об именах для оперативного исправления, например hotfix-20121203

    git checkout -b hotfix-20121203 
    
  2. объединить вашу ветку исправлений в стадии подготовки, развертывания и тестирования

    git checkout staging
    git merge hotfix-20121203
    cap staging deploy
    
  3. объединить ветку исправлений с мастером, развернуть и протестировать мастер

    git checkout master
    git merge hotfix-20121203
    cap production deploy
    
Другие вопросы по тегам