Хорошее развертывание GIT с использованием стратегии филиалов с Heroku?

StackOverflow https://stackoverflow.com/questions/1489393

Вопрос

Какова хорошая стратегия развертывания с GIT + Heroku (Ruby On Rails)?

В настоящее время то, как я работаю с моим репозиторием GIT Origin GIT: все функции (или «истории») сначала проверяются как филиалы, а затем объединяются с мастером и подталкивают к происхождению.

Все, что подтолкнуло к происхождению/мастеру, запускает сценарий, который вытягивает новый код Rails в зону постановки (Simple Rails Webserver).

Когда мне придет время выдвинуть новую производственную версию в Heroku, я должен создать новую филиал (называемой что -то вроде Production_version_121) и как -то подтолкнуть его к Хероку?

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

Например, я, возможно, не хочу, чтобы весь последний код был подтолкнут к производству. Я мог бы захотеть функционировать «А», над которым я работал, и функционировал «C», оба как -то объединились в производство, не включив экспериментальную функцию «B», которая требует большей отладки.

Nb я сначала постараюсь избежать Капистрано и на данный момент что -то работает вручную.

Мысли? Лучшие практики?

Это было полезно?

Решение

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

git push heroku production:master

А staging Бранч обслуживает аналогичную цель для постановки (также на Героку)

Другие советы

С тех пор, как я читал Винсент Дриссен Успешная модель ветвления GIT, Меня зацепили. Вся моя компания (8 из нас) теперь стандартизировала на этой модели, и несколько других мест, с которыми я консультировался, также начали ее использовать.

Большинство из всех, кого я показал, говорят, что они уже делали что -то подобное, и было очень легко адаптироваться.

Короче говоря, у вас есть 2 ветви, которые являются постоянными (мастер и развивается). В большинстве случаев вы просто будете делать отрасли от развития и слияния их обратно в развитие. Все становится немного сложнее, когда вы делаете производственные выпуски и горячие герметики, но после прочтения пост пару раз он становится затягиваемым.

Есть даже инструмент командной строки под названием git-flow Чтобы помочь вам.

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

Я дам вам одну возможную стратегию с макушки моей головы: учитывая, что у вас уже есть автоматизированная настройка постановки, которая использует Master, я бы посоветовал создать «производственную» филиал. Если вы хотите продвинуть исправление/функцию в производстве, вы просто объедините ветвь темы в свой «производственный» филиал.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top