Mise en scène par exemple sur Heroku
-
16-09-2019 - |
Question
Je voudrais être en mesure de pousser le code à dev.myapp.com
pour tester et ensuite à www.myapp.com
pour la production. Est-ce possible avec Heroku?
La solution
Votre interface Heroku est essentiellement une branche Git. Le joyau Heroku fait un peu de travail à travers leur API, mais dans votre dépôt Git, il est juste une nouvelle branche à distance.
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
Une fois que vous configurez plusieurs applications sur Heroku, vous devriez être en mesure de configurer votre dépôt Git comme ceci:
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
Je travaille habituellement dans une branche « travail », et utiliser Github pour mon maître.
En supposant que ce soit le cas pour vous, votre flux de travail de déploiement chercherais probablement quelque chose comme:
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
Autres conseils
Ceci explique tout ce que vous devez savoir si vous êtes un débutant comme moi: http://devcenter.heroku.com/articles / multiple-environnements
Un élément clé de la question initiale est de relier l'application de la mise en scène d'un sous-domaine (dev.myapp.com) de l'application principale (www.myapp.com). Cela n'a pas été abordée dans aucune des réponses.
Étape 1: Configurer les versions de production ( 'monappli') et la mise en scène ( 'mise en scène-myapp') de votre application comme cela est indiqué dans la réponse par Luc Bayes
Étape 2: Dans votre système de gestion de domaine (par exemple GoDaddy):
Create a CNAME record: dev.myapp.com
that points to: proxy.heroku.com
Étape 3: configurer Heroku pour acheminer dev.myapp.com de stadification-monapp:
heroku domains:add dev.myapp.com --app staging-myapp
Après l'enregistrement CNAME a eu le temps de se propager, vous serez en mesure d'exécuter votre application à la mise en scène dev.myapp.com.
Vous devriez vérifier heroku_san
Il fait un très bon travail avec la jonglerie des environnements sur Heroku.
Les choses sont plus faciles maintenant. Voici comment vous le faites ...
Créer une application pour chaque environnement
$ heroku create myapp --remote production
$ heroku create myapp-staging --remote staging
Ceci crée le nom repo à distance pour chaque application, que vous pouvez voir dans .git/config
.
Vous pouvez maintenant utiliser le - application ou - à distance des commutateurs pour cibler une application particulière:
$ heroku info --app myapp-staging
$ heroku info --remote staging
Set environnements Rails
Pour Rails applications, Heroku à l'environnement "production" . Si vous voulez que votre application de mise en scène pour exécuter dans un environnement de mise en scène, créer l'environnement dans votre projet et définir le correspondant RAILS_ENV et RAKE_ENV variables d'environnement sur l'application:
$ heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging
Configurer les environnements
Si vous avez d'autres variables de configuration que vous aurez besoin de les passer pour chaque environnement ainsi.
$ heroku config:set AWS_KEY=abc --remote staging
$ heroku config:set AWD_SECRET=123 --remote staging
...etc
C'est une douleur énorme si petit bijou si je viens d'utiliser mon snappconfig et exécuter
$ rake heroku:config:load[myapp-staging]
pour charger les fichiers de configuration YAML de mon projet dans Heroku.
Déploiement
Maintenant, vous poussez juste Heroku comme ceci:
$ git push staging master
$ git push production master
et la migration comme ceci:
$ heroku run rake db:migrate --remote staging
$ heroku run rake db:migrate --remote production
(Voir Gestion des environnements multiples pour une application |. Heroku Dev Center pour plus d'informations et les raccourcis)