Search code examples
deploymentherokustaging

Staging instance on Heroku


I'd like to be able to push code to dev.myapp.com for testing and then to www.myapp.com for production use. Is this possible with Heroku?


Solution

  • Your interface to Heroku is essentially a Git branch. The Heroku gem does some work through their API, but within your Git repository, it's just a new remote branch.

    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
    

    Once you set up multiple applications on Heroku, you should be able to configure your Git repository like this:

    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
    

    I usually work in a 'working' branch, and use Github for my master.

    Assuming that's the case for you, your deploy workflow would probably look something like:

    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