Messa in scena esempio su Heroku
-
16-09-2019 - |
Domanda
Mi piacerebbe essere in grado di spingere il codice per dev.myapp.com
per il test e poi a www.myapp.com
per l'uso in produzione. Questo è possibile con Heroku?
Soluzione
L'interfaccia di Heroku è essenzialmente un ramo Git. La gemma Heroku fa un certo lavoro attraverso la loro API, ma all'interno della vostra repository Git, è solo una nuova filiale a distanza.
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
Dopo aver configurato più applicazioni su Heroku, si dovrebbe essere in grado di configurare il repository Git in questo modo:
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
Di solito lavoro in un ramo 'lavoro', e utilizzare Github per il mio padrone.
Supponendo che è il caso per voi, il flusso di lavoro implementare probabilmente simile a:
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
Altri suggerimenti
Questo spiega tutto quello che è necessario sapere se il vostro un novizio come me: http://devcenter.heroku.com/articles / multiple-ambienti
Una parte fondamentale della domanda iniziale è di circa collegando l'applicazione messa in scena per un sottodominio (dev.myapp.com) dell'app principale (www.myapp.com). Questo non è stato affrontato in una qualsiasi delle risposte.
Passaggio 1: Configurare sia la produzione ( 'myapp') e messa in scena ( 'messa in scena-myapp') versioni della tua app come è indicato nella risposta da Luca Bayes
Passo 2: Nel vostro sistema di gestione del dominio (ad esempio GoDaddy):
Create a CNAME record: dev.myapp.com
that points to: proxy.heroku.com
Passaggio 3: Configurare Heroku per instradare dev.myapp.com alla messa in scena-myapp:
heroku domains:add dev.myapp.com --app staging-myapp
Dopo il record CNAME ha avuto il tempo per propagarsi, si sarà in grado di eseguire lo stadiazione applicazione a dev.myapp.com.
Si dovrebbe controllare il heroku_san
Si fa un buon lavoro giocoleria con gli ambienti su Heroku.
Le cose sono più facili ora. Ecco come si fa ...
Crea un app per ogni ambiente
$ heroku create myapp --remote production
$ heroku create myapp-staging --remote staging
Questo creerà chiamato pronti contro termine a distanza per ogni applicazione, che potete vedere nella .git/config
.
È ora possibile utilizzare il - app o - remote interruttori di indirizzare una particolare app:
$ heroku info --app myapp-staging
$ heroku info --remote staging
ambienti Set Rails
Per applicazioni Rails, Heroku per la "produzione" ambiente . Se volete che il vostro messa in scena applicazione per l'esecuzione in un ambiente di staging, creare l'ambiente nel progetto e impostare il corrispondente RAILS_ENV e RAKE_ENV le variabili d'ambiente su App:
$ heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging
Configura ambienti
Se si dispone di altre variabili di configurazione avrete bisogno di passarli in per ogni ambiente.
$ heroku config:set AWS_KEY=abc --remote staging
$ heroku config:set AWD_SECRET=123 --remote staging
...etc
Questo è un dolore enorme anche se così mi basta usare la mia snappconfig gemma e corro
$ rake heroku:config:load[myapp-staging]
per caricare i file di configurazione YAML di mio progetto in Heroku.
Deploy
Ora è sufficiente premere a Heroku in questo modo:
$ git push staging master
$ git push production master
e migrare in questo modo:
$ heroku run rake db:migrate --remote staging
$ heroku run rake db:migrate --remote production
(Vedere gestione di ambienti multipli per un App |. Heroku Dev Center per maggiori informazioni e tasti di scelta rapida)