Inscenizacja na Heroku

Chciałbym móc wypchnąć kod do dev.myapp.com do testów, a następnie do www.myapp.com do użytku produkcyjnego. Czy to możliwe z Heroku?

Author: August Lilleaas, 2009-08-14

5 answers

Twój interfejs do Heroku jest zasadniczo gałęzią Git. Heroku gem działa poprzez swoje API, ale w repozytorium Git jest to tylko Nowa zdalna gałąź.

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

Po skonfigurowaniu wielu aplikacji na Heroku, powinieneś być w stanie skonfigurować swoje repozytorium Git w następujący sposób:

git remote add staging [email protected]:staging-yourapp.git
git push origin staging

git remote add production [email protected]:yourapp.git
git push origin production

Zazwyczaj pracuję w' działającej ' gałęzi i używam Githuba jako swojego mistrza.

Zakładając, że tak jest w przypadku ciebie, twój workflow wdrożenia prawdopodobnie wyglądałby coś like:

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
 142
Author: Luke Bayes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-21 20:44:39

To wyjaśnia wszystko, co musisz wiedzieć, jeśli twój początkujący jak ja: http://devcenter.heroku.com/articles/multiple-environments

 19
Author: LearningRoR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-05 07:59:38

Kluczową częścią pierwotnego pytania jest połączenie aplikacji staging z subdomeną (dev.myapp.com) głównej aplikacji (www.myapp.com). to nie zostało omówione w żadnej z odpowiedzi.

Krok 1: Skonfiguruj zarówno wersje produkcyjne ('myapp'), jak i staging ('staging-myapp') aplikacji, zgodnie z odpowiedzią Luke ' a Bayesa

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

Krok 3: Skonfiguruj Heroku do trasy dev.myapp.com na staging-myapp:

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

Po tym, jak rekord CNAME będzie miał czas na rozpropagowanie, będziesz mógł uruchomić aplikację staging na dev.myapp.com.

 10
Author: Don Leatham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-01 07:42:08

Powinieneś sprawdzić heroku_san

Całkiem nieźle żongluje z otoczeniem na heroku.

 8
Author: jlfenaux,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-29 13:08:36

Teraz jest łatwiej. Oto jak to zrobisz...

Tworzenie aplikacji dla każdego środowiska

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

Spowoduje to utworzenie nazwanych zdalnych repo dla każdej aplikacji, które można zobaczyć w .git/config.

Możesz teraz użyć przełączników --app lub --remote, aby wybrać konkretną aplikację:

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

Set rails environments

W przypadku aplikacji Rails, Heroku domyślnie jest środowiskiem "produkcyjnym" . Jeśli chcesz, aby aplikacja inscenizacyjna działała w aplikacji inscenizacyjnej środowisko, Utwórz środowisko w swoim projekcie i ustaw odpowiednie zmienne środowiskowe RAILS_ENV i RAKE_ENV w aplikacji:
$ heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging

Konfiguracja środowisk

Jeśli masz inne zmienne konfiguracyjne, musisz je również przekazać dla każdego środowiska.

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

To ogromny ból, więc używam mojego snappconfig gem and run

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

Aby załadować pliki konfiguracyjne YAML mojego projektu do Heroku.

Teraz wciskasz do Heroku tak:

$ git push staging master
$ git push production master

I migrować tak:

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

Aby uzyskać więcej informacji i skrótów, Zobacz zarządzanie wieloma środowiskami dla App | Heroku Dev Center.)
 6
Author: Yarin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-27 14:05:52