implementar en un server de testing antes de la producción en heroku

Como soy nuevo en esto, no estoy seguro de que así sea como debería ser:

Estoy haciendo una aplicación web y estoy usando heroku para hosting

Quiero tener varios desarrolladores trabajando en el mismo código en github.

Me gustaría tener 2 serveres en heroku: uno para producción y otro para testings (¿también se llama puesta en escena?)

El problema es que sé que al hacer git push heroku master desde la carpeta de aplicaciones web lo enviará a la aplicación al server heroku que se configuró en primer lugar.

  1. ¿Cómo despliego en 2 instancias heroku diferentes desde la misma carpeta usando git? ¿Es posible / recomendado?

  2. Cuando presiono para github, generalmente es el maestro, ¿debería tener otra twig para la testing?

  3. ¿Hay alguna forma de transferir una aplicación entre las instancias heroku?

si hay un lugar donde hay una rutina de implementación recomendada para heroku y github, me gustaría leerla

Cuando ejecutas git push heroku master 'heroku' identifica el repository remoto al que estás presionando. En su caso, 'heroku' parece ser una reference a su server de producción. Del mismo modo, es probable que tenga un control remoto de 'origen' apuntando a github.

Si list sus controles remotos de git, probablemente verá algo como esto:

 > git remote -v heroku git@heroku.com:heroku_app_name.git (fetch) heroku git@heroku.com:heroku_app_name.git (push) origin git@github.com:your_github_org/repo_name.git (fetch) origin git@github.com:your_github_org/repo_name.git (push) 

Para ingresar a una aplicación heroku diferente, simplemente puede agregar esa aplicación como un nuevo control remoto git.

 git remote add heroku-staging git@heroku.com:heroku_staging_app.git 

Ahora debería poder presionar a cualquiera de los controles remotos según sea necesario.

 git push origin master //push to github git push heroku-staging //deploy to staging git push heroku master //deploy to production 

En general, sugiero que no se debe presionar a heroku manualmente. Es de esperar que pueda tener un server de continuous integration watch github, ejecutar testings cada vez que presione cambios, y desplegar en etapas solamente cuando pasan sus testings automatizadas. A continuación, puede tener una tarea de CI desencadenada manualmente que empuja a la producción lo que actualmente está en fase de transición (o incluso automatiza la producción).

Puede realizar la misma configuration usando la línea de command heroku . Eso también le brinda una buena manera de administrar variables de entorno y otras configuraciones en sus dos aplicaciones heroku: https://devcenter.heroku.com/articles/multiple-environments