Je voudrais être capable de repousser le code pour pour tester et ensuite pour
pour la production de l’utiliser. Est-ce possible avec Heroku ?
Réponses
Trop de publicités?Votre interface de Heroku est essentiellement une branche Git. Le Heroku gem certains fonctionne grâce à leur API, mais à l'intérieur de votre dépôt Git, c'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 avez configuré 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
J'ai l'habitude de travailler dans un "travail" de la branche, et d'utiliser Github pour mon maître.
En supposant que c'est le cas pour vous, votre déployer des flux de travail serait probablement ressembler à 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
Ce qui explique tout ce que vous devez savoir si vous êtes un débutant comme moi : http://devcenter.heroku.com/articles/multiple-environments
Un élément clé de la question d'origine est sur la liaison jusqu'à la mise en scène application à un sous-domaine (dev.myapp.com) de l'application principale (www.myapp.com). Cela n'a pas été abordé dans les réponses.
Étape 1: Configurer à la fois la production ('myapp') et la mise en scène (la "mise en scène-myapp') versions de votre application comme cela est indiqué dans la réponse par Luc de Bayes
Étape 2: Dans votre domaine de gestion du système (par exemple, GoDaddy):
Create a CNAME record: dev.myapp.com
that points to: proxy.heroku.com
Étape 3: Configurer Heroku pour la route dev.myapp.com à la mise en scène-myapp:
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, mise en scène dev.myapp.com.
Vous devriez vérifier la heroku_san
Il fait un bon travail, jonglant avec les 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
Cela va créer distant nommé repos pour chaque application, que vous pouvez voir en .git/config
.
Vous pouvez maintenant utiliser l' --app ou --à distance des interrupteurs pour cible une application en particulier:
$ heroku info --app myapp-staging
$ heroku info --remote staging
Jeu de Rails environnements
Pour les Rails apps, Heroku par défaut à la "production" de l'environnement. Si vous voulez que votre mise en scène application de s'exécuter dans un environnement de test, créer l'environnement de votre projet et de mettre en 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 vous aurez besoin de passer dans chaque environnement.
$ heroku config:set AWS_KEY=abc --remote staging
$ heroku config:set AWD_SECRET=123 --remote staging
...etc
C'est une énorme douleur bien donc je peu utiliser mon snappconfig gem et exécuter
$ rake heroku:config:load[myapp-staging]
pour charger mon projet YAML fichiers de configuration dans Heroku.
Déployer
Maintenant, vous venez de pousser à Heroku comme ceci:
$ git push staging master
$ git push production master
et de migrer comme ceci:
$ heroku run rake db:migrate --remote staging
$ heroku run rake db:migrate --remote production
(Voir la Gestion de Plusieurs Environnements pour une App | Heroku Dev Center pour plus d'info et des raccourcis.)