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