Chciałbym móc wypchnąć kod do dev.myapp.com
testowania, a następnie do www.myapp.com
użytku produkcyjnego. Czy jest to możliwe z Heroku?
Chciałbym móc wypchnąć kod do dev.myapp.com
testowania, a następnie do www.myapp.com
użytku produkcyjnego. Czy jest to możliwe z Heroku?
Odpowiedzi:
Twój interfejs do Heroku to w zasadzie gałąź Git. Klejnot Heroku wykonuje trochę pracy 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 w Heroku powinieneś być w stanie skonfigurować repozytorium Git w następujący sposób:
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
Zwykle pracuję w gałęzi „pracującej” i używam Githuba jako swojego mistrza.
Zakładając, że tak jest w Twoim przypadku, przepływ pracy wdrażania prawdopodobnie wyglądałby mniej więcej tak:
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
heroku create yourapp --remote your-remote
heroku
polecenia muszą zawierać --app staging
lub --app production
. Czy istnieje sposób na ustawienie wartości domyślnej? (Pytanie jako komentarz b / c wydaje się zbyt ukierunkowane, aby być pełnoprawnym pytaniem SO.)
To wyjaśnia wszystko, co musisz wiedzieć, jeśli jesteś nowicjuszem, takim jak ja: http://devcenter.heroku.com/articles/multiple-environments
Kluczowa część pierwotnego pytania dotyczy połączenia aplikacji testowej z subdomeną (dev.myapp.com) głównej aplikacji (www.myapp.com). Nie zostało to uwzględnione w żadnej z odpowiedzi.
Krok 1: Skonfiguruj zarówno wersję produkcyjną („myapp”), jak i wersję testową („staging-myapp”), jak wskazał w odpowiedzi Luke Bayes
Krok 2: W systemie zarządzania domeną (np. GoDaddy):
Create a CNAME record: dev.myapp.com
that points to: proxy.heroku.com
Krok 3: Skonfiguruj Heroku, aby kierował dev.myapp.com na staging-myapp:
heroku domains:add dev.myapp.com --app staging-myapp
Gdy rekord CNAME zdąży się rozpropagować, będziesz mógł uruchomić aplikację testową pod adresem dev.myapp.com.
before_filter
haczyk do mojego, application_controller
aby złapać WSZYSTKO w fazie przejściowej i zmusić użytkownika do zalogowania się jako administrator, a następnie ustawiłem plik cookie administratora, aby nadal widzieć aplikację z punktu widzenia „nieadministratora”. Pracuje całkiem nieźle dla mnie.
Powinieneś sprawdzić heroku_san
Świetnie sobie radzi, żonglując środowiskami na heroku.
Teraz jest łatwiej. Oto jak to robisz ...
$ heroku create myapp --remote production
$ heroku create myapp-staging --remote staging
Spowoduje to utworzenie nazwanych repozytoriów zdalnych dla każdej aplikacji, które można zobaczyć w .git/config
.
Możesz teraz używać przełączników --app lub --remote , aby kierować reklamy na określoną aplikację:
$ heroku info --app myapp-staging
$ heroku info --remote staging
W przypadku aplikacji Rails, Heroku domyślnie wybiera środowisko „produkcyjne” . Jeśli chcesz, aby Twoja aplikacja testowa działała w środowisku przejściowym , 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
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 jednak ogromny ból, więc po prostu używam klejnotu snappconfig i biegnę
$ rake heroku:config:load[myapp-staging]
aby załadować pliki konfiguracyjne YAML mojego projektu do Heroku.
Teraz po prostu popchnij do Heroku w ten sposób:
$ git push staging master
$ git push production master
i migruj w ten sposób:
$ heroku run rake db:migrate --remote staging
$ heroku run rake db:migrate --remote production
(Zobacz Zarządzanie wieloma środowiskami dla aplikacji | Centrum deweloperów Heroku, aby uzyskać więcej informacji i skrótów).
RAILS_ENV
i RACK_ENV
aby staging
się zniechęcać Heroku: „To może być kuszące, aby utworzyć kolejną niestandardową środowiska takie jak«inscenizacji»i stworzyć config / Środowiska / staging.rb i wdrożyć do aplikacji Heroku z RAILS_ENV = inscenizacji To nie jest dobrą praktyką. . Zamiast tego zalecamy zawsze uruchamianie w trybie produkcyjnym i modyfikowanie dowolnego zachowania poprzez ustawienie zmiennych konfiguracyjnych. " Więcej na ten temat tutaj: devcenter.heroku.com/articles/…
git push staging edge work
?