Что хорошая стратегия развертывания должна использовать с Мерзавцем + Heroku (Ruby on Rails)?
В настоящее время путь я работаю со своим репозиторием Мерзавца источника: Все функции (или 'истории') сначала проверяются как ответвления, затем объединяются с ведущим устройством и продвинули к источнику.
Что-либо продвинутое к источнику/ведущему устройству инициировало сценарий, который вытягивает новый код направляющих в район сосредоточения войск (простой веб-сервер направляющих).
То, когда время настает, чтобы я продвинул новую производственную версию к Heroku, я должен создать новое ответвление (назвало что-то как production_version_121), и продвиньте это так или иначе к Heroku?
Идеально, я хотел бы привередничать, какие функции от предыдущих версий разработки я должен включать в производственное ответвление... тестируют его, и нажатие к Heroku.
Например, я не могу хотеть, чтобы весь последний код был продвинут к производству. Я мог бы хотеть показать "a", что я продолжил работать и функция "c", оба объединились в производство так или иначе без включения экспериментальной функции "b", которому нужно больше отладки.
N.B. Я собираюсь попытаться избежать Capistrano сначала и получить что-то работающее вручную на данный момент.
Какие-либо мысли? Лучшие практики?
В проекте Gemcutter у нас просто есть производственная ветка. Любые изменения, которые мы хотим видеть на рабочем сайте, объединяются в эту ветвь, а затем развертываются с помощью:
git push heroku production:master
Промежуточная ветвь
служит той же цели для промежуточного сайта (также на Heroku)
Есть множество способов пойти об этом, и это действительно зависит от ваших предпочтений.
I ' Я дам вам одну возможную стратегию, которую я не знаю: учитывая, что у вас уже есть автоматическая промежуточная установка, использующая master, я бы предложил создать ветвь 'production'. Если вы хотите продвинуть исправление / функцию в рабочую среду, вы просто объедините тематическую ветку в свою «производственную» ветку.
git checkout production
git pull . my-topic-branch
(resolve any conflicts)
Когда вы будете готовы отправить этот код на рабочий сервер, вам следует пометить ветку, используя уникальное имя (возможно, с меткой времени). Затем вы просто отправляете производственную ветку в Heroku.
git checkout production
git tag release-200910201249
Я бы предложил создать сценарий или псевдоним git для автоматизации тегирования для временных меток, поскольку важно использовать согласованную схему именования. Я использую что-то вроде этого:
git config alias.dtag '!git tag release-`date "+%Y%m%d%H%M"`'
Это позволяет мне просто набрать git dtag
, когда я хочу пометить выпуск меткой времени.
Вы можете просматривать свои теги с помощью git tag
и просматривать их с помощью git show release-1234
. Для получения дополнительной информации о тегах запустите git help tag
. Вы также можете найти это руководство Github по тегам. Я также рекомендовал бы ознакомиться с рабочими процессами других людей (вот отличное описание ) и выбрать то, что работает для вас.