other learn deploy cli deployment heroku staging

deployment - learn - Instancia de ensayo en Heroku



heroku panel (5)

Debes consultar el heroku_san

Hace un muy buen trabajo haciendo malabarismos con entornos en heroku.

Me gustaría poder enviar el código a dev.myapp.com para realizar pruebas y luego a www.myapp.com para su uso en producción. ¿Es esto posible con Heroku?



Las cosas son más fáciles ahora. Así es como lo haces ...

Crea una aplicación para cada entorno

$ heroku create myapp --remote production $ heroku create myapp-staging --remote staging

Esto creará repos remotos con nombre para cada aplicación, que puedes ver en .git/config .

Ahora puede usar los modificadores --app o --remote para dirigirse a una aplicación en particular:

$ heroku info --app myapp-staging $ heroku info --remote staging

Establecer entornos Rails

Para las aplicaciones de Rails, Heroku adopta de manera predeterminada el entorno de "producción" . Si desea que su aplicación de ensayo se ejecute en un entorno intermedio , cree el entorno en su proyecto y establezca las correspondientes variables de entorno RAILS_ENV y RAKE_ENV en la aplicación:

$ heroku config:set RACK_ENV=staging RAILS_ENV=staging --remote staging

Configurar entornos

Si tiene otras variables de configuración, deberá pasarlas también para cada entorno.

$ heroku config:set AWS_KEY=abc --remote staging $ heroku config:set AWD_SECRET=123 --remote staging ...etc

Eso es un gran dolor, así que solo uso mi gema snappconfig y corro

$ rake heroku:config:load[myapp-staging]

para cargar los archivos de configuración de YAML de mi proyecto en Heroku.

Desplegar

Ahora solo presionas a Heroku de esta manera:

$ git push staging master $ git push production master

y migrar así:

$ heroku run rake db:migrate --remote staging $ heroku run rake db:migrate --remote production

(Consulte devcenter.heroku.com/articles/multiple-environments de desarrollo devcenter.heroku.com/articles/multiple-environments para obtener más información y accesos directos).


Tu interfaz con Heroku es esencialmente una rama de Git. La gema Heroku hace algo de trabajo a través de su API, pero dentro de su repositorio Git, es solo una nueva rama remota.

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

Una vez que configuras varias aplicaciones en Heroku, deberías poder configurar tu repositorio de Git así:

git remote add staging [email protected]:staging-yourapp.git git push origin staging git remote add production [email protected]:yourapp.git git push origin production

Normalmente trabajo en una sucursal de "trabajo" y uso Github para mi maestro.

Suponiendo que ese sea el caso para usted, su flujo de trabajo de implementación probablemente se parecería a algo así como:

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


Una parte clave de la pregunta original es vincular la aplicación de ensayo a un subdominio (dev.myapp.com) de la aplicación principal (www.myapp.com). Esto no ha sido abordado en ninguna de las respuestas.

Paso 1: configure las versiones de producción (''myapp'') y de preparación (''staging-myapp'') de su aplicación como se indica en la respuesta de Luke Bayes

Paso 2: en su sistema de gestión de dominios (por ejemplo, GoDaddy):

Create a CNAME record: dev.myapp.com that points to: proxy.heroku.com

Paso 3: configura Heroku para enrutar dev.myapp.com a staging-myapp:

heroku domains:add dev.myapp.com --app staging-myapp

Después de que el registro CNAME haya tenido tiempo de propagarse, podrá ejecutar su aplicación de ensayo en dev.myapp.com.