Frage

Ich möchte in der Lage sein, Code zu schieben für die Prüfung dev.myapp.com und dann für den produktiven Einsatz www.myapp.com. Ist dies möglich mit Heroku?

War es hilfreich?

Lösung

Ihre Schnittstelle zu Heroku ist im Wesentlichen ein Git-Zweig. Das Heroku Juwel hat einige Arbeit durch ihre API, aber in Ihrer Git-Repository, es ist nur ein neuer Remote-Zweig.

heroku create yourapp # production
git br -D heroku # delete the default branch

heroku create staging-yourapp # staging
git br -D heroku # delete the default branch

Wenn Sie mehrere Anwendungen auf Heroku einrichten, sollten Sie in der Lage sein, Ihre Git-Repository wie folgt zu konfigurieren:

git remote add staging git@heroku.com:staging-yourapp.git
git push origin staging

git remote add production git@heroku.com:yourapp.git
git push origin production

Ich arbeite in der Regel in einem ‚Arbeits‘ Zweig, und verwenden Sie Github für mein Meister.

Unter der Annahme, dass der Fall für Sie, Ihre deploy Workflow wahrscheinlich etwas aussehen würde:

git co -b working
# do some work

# push to github:
git co master
git merge working
git push

# push to staging:
git co staging
git merge master
git push origin staging

# push to production
git co production
git merge master
git push origin production

Andere Tipps

Das erklärt alles, was Sie wissen müssen, wenn Ihr ein Neuling wie mich: http://devcenter.heroku.com/articles / multiple-Umgebungen

Ein wesentlicher Teil der ursprünglichen Frage geht es um die Inszenierung App eine Sub-Domain Verknüpfung (dev.myapp.com) der Haupt app (www.myapp.com). Dies hat sich nicht in eine der Antworten angesprochen.

Schritt 1: sowohl die Produktion konfiguriert ( 'myapp') und Inszenierung ( 'Staging-myapp') Versionen Ihrer App, wie in der Antwort von Luke Bayes angegeben

Schritt 2: In Ihrem Domain-Management-System (z GoDaddy):

Create a CNAME record:  dev.myapp.com 
that points to:   proxy.heroku.com

Schritt 3: Konfigurieren Heroku zu routen dev.myapp.com zu Staging-myapp:

heroku domains:add dev.myapp.com --app staging-myapp

Nach der CNAME Rekordzeit zu verbreiten hatte, können Sie Ihre Inszenierung App bei dev.myapp.com auszuführen.

Sie sollten die heroku_san

Es hat einen ziemlich guten Job Jonglieren mit Umgebungen auf Heroku.

Die Dinge sind jetzt einfacher. Hier ist, wie Sie es tun ...

Erstellen Sie eine App für jede Umgebung

$ heroku create myapp --remote production
$ heroku create myapp-staging --remote staging

Dies wird Remote-repos für jede App namens erstellen, die Sie in .git/config sehen können.

Sie können nun entweder die - App oder - Remote Schalter eine bestimmte App Ziel:

$ heroku info --app myapp-staging
$ heroku info --remote staging

Set Rails Umgebungen

Für Rails-Anwendungen, Heroku standardmäßig auf die "Produktion" Umwelt . Wenn Sie Ihre Inszenierung App in einer Staging-Umgebung ausgeführt werden sollen, die Umwelt in Ihrem Projekt erstellen und Stellen Sie die entsprechende RAILS_ENV und RAKE_ENV Umgebungsvariablen auf dem App:

$ heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging

Konfigurieren Umgebungen

Wenn Sie andere Konfigurationsvariablen haben Sie benötigen sie auch für jede Umgebung passieren in.

$ heroku config:set AWS_KEY=abc --remote staging
$ heroku config:set AWD_SECRET=123 --remote staging
...etc

Das ist ein großer Schmerz, obwohl so dass ich nur meine verwenden snappconfig Juwel und führen

$ rake heroku:config:load[myapp-staging]

mein Projekt YAML Config laden Dateien in Heroku.

Bereitstellen

Jetzt drücken Sie einfach auf Heroku wie folgt aus:

$ git push staging master
$ git push production master

und wandern wie folgt aus:

$ heroku run rake db:migrate --remote staging
$ heroku run rake db:migrate --remote production

(Siehe Verwaltung mehrerer Umgebungen für eine App |. Heroku Dev für weitere Informationen und Verknüpfungen)

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