Frage

Was ist eine gute Bereitstellungsstrategie für Git + Heroku (Ruby on Rails)?

Derzeit arbeite ich mit meinem ursprünglichen Git-Repository:Alle Features (oder „Storys“) werden zunächst als Zweige ausgecheckt, dann mit dem Master zusammengeführt und zum Ursprung verschoben.

Alles, was an Origin/Master gesendet wird, löst ein Skript aus, das den neuen Rails-Code in den Staging-Bereich (einfacher Rails-Webserver) zieht.

Wenn es für mich an der Zeit ist, eine neue Produktionsversion auf Heroku zu übertragen, sollte ich dann einen neuen Zweig erstellen (so etwas wie „Produktionsversion_121“ genannt) und diesen irgendwie auf Heroku übertragen?

Im Idealfall möchte ich auswählen, welche Funktionen aus früheren Entwicklungsversionen ich in den Produktionszweig aufnehmen soll ...Testen Sie es und schieben Sie es zu Heroku.

Beispielsweise möchte ich möglicherweise nicht, dass der gesamte aktuelle Code in die Produktion übertragen wird.Vielleicht möchte ich, dass die Funktion „a“, an der ich gearbeitet habe, und die Funktion „c“ beide irgendwie in die Produktion integriert werden, ohne die experimentelle Funktion „b“ einzubeziehen, die mehr Debugging erfordert.

Hinweis:Ich werde zunächst versuchen, Capistrano zu vermeiden und vorerst etwas manuell zum Laufen zu bringen.

Gedanken?Empfohlene Vorgehensweise?

War es hilfreich?

Lösung

Im GemCutter -Projekt haben wir einfach eine Produktion Zweig. Alle Änderungen, die wir auf der Produktionsseite sehen möchten, werden in diese Filiale verschmolzen und dann mit:

git push heroku production:master

Das staging Branch dient einem ähnlichen Zweck für die Staging -Site (auch auf Heroku)

Andere Tipps

Seit ich Vincent Driessens gelesen habe Ein erfolgreiches Git -Verzweigungsmodell, Ich bin begeistert. Meine gesamte Firma (8 von uns) hat jetzt in diesem Modell standardisiert, und einige andere Orte, an die ich mich beraten hat, haben ebenfalls begonnen, es zu verwenden.

Fast jeder, den ich gezeigt habe, sagt es, dass sie schon etwas Ähnliches getan haben und es sehr einfach fanden, sich anzupassen.

Kurz gesagt, Sie haben 2 Zweige, die dauerhaft sind (Master und Entwicklung). Die meiste Zeit werden Sie Zweige davon abhalten, sich zu entwickeln und sie wieder in die Entwicklung zu verschmelzen. Die Dinge werden etwas komplexer, wenn Sie in Produktionsveröffentlichungen und Hotfixes eingehen, aber nachdem Sie den Beitrag ein paar Mal gelesen haben, wird er verankert.

Es gibt sogar ein Befehlszeilen -Tool aufgerufen Git-Flow um dir zu helfen.

Es gibt verschiedene Möglichkeiten, dies zu erreichen, und es hängt wirklich von Ihren Vorlieben ab.

Ich gebe Ihnen spontan eine mögliche Strategie:Da Sie bereits über ein automatisiertes Staging-Setup verfügen, das Master verwendet, würde ich vorschlagen, einen „Produktions“-Zweig zu erstellen.Wenn Sie einen Fix/eine Funktion in die Produktion hochstufen möchten, führen Sie einfach den Themenzweig in Ihren Produktionszweig ein.

git checkout production
git pull . my-topic-branch
(resolve any conflicts)

Wenn Sie tatsächlich dazu bereit sind drücken Sie sollten diesen Code auf Ihren Produktionsserver übertragen Etikett den Zweig unter Verwendung eines eindeutigen Namens (wahrscheinlich mit einem Zeitstempel).Dann schieben Sie einfach den Produktionszweig nach Heroku.

git checkout production
git tag release-200910201249

Ich würde vorschlagen, ein Skript oder einen Git-Alias ​​zu erstellen, um das Tagging für Zeitstempel zu automatisieren, da die Verwendung eines konsistenten Benennungsschemas wichtig ist.Ich verwende so etwas:

git config alias.dtag '!git tag release-`date "+%Y%m%d%H%M"`'

Dadurch kann ich einfach tippen git dtag wenn ich eine Veröffentlichung mit einem Zeitstempel versehen möchte.

Sie können Ihre Tags mit anzeigen git tag und sie mit ansehen git show release-1234.Weitere Informationen zu Tags erhalten Sie unter „run“. git help tag.Möglicherweise finden Sie dies auch Github-Anleitung zum Markieren hilfreich.Ich würde auch empfehlen, sich über die Arbeitsabläufe anderer Leute zu informieren (hier). ein schöner Bericht) und wählen Sie aus, was für Sie funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top