Хорошее развертывание Мерзавца с помощью стратегии ответвлений с Heroku?

Что хорошая стратегия развертывания должна использовать с Мерзавцем + Heroku (Ruby on Rails)?

В настоящее время путь я работаю со своим репозиторием Мерзавца источника: Все функции (или 'истории') сначала проверяются как ответвления, затем объединяются с ведущим устройством и продвинули к источнику.

Что-либо продвинутое к источнику/ведущему устройству инициировало сценарий, который вытягивает новый код направляющих в район сосредоточения войск (простой веб-сервер направляющих).

То, когда время настает, чтобы я продвинул новую производственную версию к Heroku, я должен создать новое ответвление (назвало что-то как production_version_121), и продвиньте это так или иначе к Heroku?

Идеально, я хотел бы привередничать, какие функции от предыдущих версий разработки я должен включать в производственное ответвление... тестируют его, и нажатие к Heroku.

Например, я не могу хотеть, чтобы весь последний код был продвинут к производству. Я мог бы хотеть показать "a", что я продолжил работать и функция "c", оба объединились в производство так или иначе без включения экспериментальной функции "b", которому нужно больше отладки.

N.B. Я собираюсь попытаться избежать Capistrano сначала и получить что-то работающее вручную на данный момент.

Какие-либо мысли? Лучшие практики?

28
задан Meraj al Maksud 6 October 2019 в 23:51
поделиться

2 ответа

В проекте Gemcutter у нас просто есть производственная ветка. Любые изменения, которые мы хотим видеть на рабочем сайте, объединяются в эту ветвь, а затем развертываются с помощью:

git push heroku production:master

Промежуточная ветвь служит той же цели для промежуточного сайта (также на Heroku)

32
ответ дан 28 November 2019 в 03:06
поделиться

Есть множество способов пойти об этом, и это действительно зависит от ваших предпочтений.

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 по тегам. Я также рекомендовал бы ознакомиться с рабочими процессами других людей (вот отличное описание ) и выбрать то, что работает для вас.

7
ответ дан 28 November 2019 в 03:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: