Skip to main content

Learn About Heroku Flow and Its Features

Learning Objectives

After completing this unit, you’ll be able to:

  • Describe a common continuous delivery workflow with Heroku Flow.
  • Name the features of Heroku Flow and describe the purpose of each.

What is Heroku Flow?

Heroku Flow is an easy-to-use structured workflow for continuous delivery on the Heroku platform. It brings together Heroku Pipelines, Review Apps, Release Phase, Heroku CI, and GitHub and Slack integrations for a simple visual code-to-production workflow.

A common Heroku continuous delivery workflow looks something like this:

  • A developer or team member creates a Heroku Pipeline and starts adding apps.
  • A developer creates a pull request to make a change to the codebase of an app.
  • Heroku automatically creates a review app for the pull request, allowing developers to test the change.
  • When the change is ready, it’s merged into the code’s main branch.
  • The main branch automatically deploys to a staging app for further testing.
  • If Heroku CI is configured, tests run to check if there are any problems with changes to the code. If Release Phase is configured, its tasks execute before deploying code. An example of a Release Phase task is handling a database migration.
  • When all is ready, a developer promotes the staging app to production, where the change is available to end users.
  • If the pipeline is integrated with Slack, a notification is posted to a specific channel when a pull request opens and the code merges back to main. These posts update the team with the status and results of CI tests and Release Phase tasks. Team members with the correct permissions can also deploy apps to staging or promote them to production from the Slack channel.

It’s time to get to know Heroku Flow’s features and understand the purpose of each.

Heroku Pipelines

A pipeline is a group of Heroku apps that share the same codebase. Each app in a pipeline represents one of these steps in a continuous delivery workflow: review, development, staging, and production.

GitHub Integration

Connecting a Heroku Pipeline to a GitHub repository makes it possible to manually or automatically deploy a branch on every GitHub push. For each deploy, you can see the diff between the current release and the previous commit in the app’s Activity tab in the Heroku Dashboard. If you’ve configured your GitHub repository to use Heroku CI or an external continuous integration (CI) server, you can configure Heroku to only auto-deploy a branch after CI passes for a particular commit.

Review Apps

Review Apps allow you to propose, discuss, and decide whether to merge changes to your code base. For Heroku apps connected to GitHub, Heroku can manually or automatically spin up a temporary test app on a unique URL for every open pull request (PR). The temporary app auto-updates on every commit, so instead of guessing about what the code does, reviewers can actually try the changes in a browser.

Release Phase

Release Phase makes it possible to run tasks before a release is deployed to production, eliminating maintenance windows and reducing deployment risk. Use Release Phase to migrate a database, upload assets to a content delivery network (CDN), invalidate a cache, or run any other task that your app needs to be ready for production. If a Release Phase task fails, the new release isn’t deployed, leaving the current production release unaffected.

Heroku CI

Heroku CI is a low-configuration test runner that integrates with Heroku Pipelines. Heroku CI runs your test scripts with zero queue time for faster results, using disposable apps that have parity with your staging and production environments. Access test results from Heroku or GitHub, automate deployments conditionally on CI results, and take advantage of a fully visual interface built to support CI’s role in team-based continuous delivery.

Heroku ChatOps

Heroku ChatOps uses the power of Heroku Pipelines to bring a collaborative deployment workflow to Slack. It enables developers to deploy to staging or promote to production from Slack. With Heroku ChatOps, teams can track all code changes within their Slack channel. Pull request notifications, merges, and CI build results all show up in Slack. There’s no context switching to see build results or check if promoting to production was successful. 

While this unit gives you an overview of Heroku Flow’s features, you’ll learn more about some of them in our next unit.

Resources 

Keep learning for
free!
Sign up for an account to continue.
What’s in it for you?
  • Get personalized recommendations for your career goals
  • Practice your skills with hands-on challenges and quizzes
  • Track and share your progress with employers
  • Connect to mentorship and career opportunities