In short, they are awesome. They have some limitations though.
Clear dash board to which documents all the environments and deployment flow.
Heroku forces to categorize your existing applications, e.g. myapp-dev.herokuapp.com to these three slots in the pipeline:
development -> staging -> production
- myapp-dev.herokuapp.com ->
development
slot - myapp-qa.herokuapp.com ->
stating
slot - myapp-prod.herokuapp.com ->
production
slot - etc.
You can have more than one app per slot, for some more complex setups.
Deploy e.g. master branch automatically to your development application. You can force that CI must pass before deployment.
From each pull request created to GitHub, start a new Heroku app where you can test all the changes.
Review apps are always related to another running app. For example if you setup review apps for dev
app,
it copies environment variables from that dev
app to the newly created review app.