Heroku Release Pipelines: Automate Your Web App Deploys with Atomic Promotions
Heroku Release Pipelines let you promote a single build from staging to production with one click, keeping the same commit and dyno settings. Learn to set up a pipeline, promote releases, and roll back quickly.
04 Mar 2026, 09:45 UTC

Why Manual Releases Are a Pain Point
Every time a new feature lands in your Git branch, the usual workflow is: git push, trigger a build, run tests, then manually deploy to staging, verify, and finally promote to production. Even small teams waste hours on repetitive, error‑prone steps. Mistakes happen when the same commit is built twice on different dyno configurations or when a promotion is forgotten.
Release Pipelines: The Thesis
Heroku’s Release Pipelines give you a visual, stage‑based workflow that ties together multiple Heroku apps—typically staging and production. When you push a commit to the staging app, the pipeline builds it once, then you can promote that exact release to production with a single click or API call. Promotions are atomic: the same buildpack stack, dyno formation, and environment variables move forward together.
Key Benefits
- Single source of truth: one commit, one build, one release ID.
- Built‑in rollback: revert to any previous release instantly.
- CI integration: GitHub Actions or Heroku CI can auto‑promote after tests pass.
- Free for hobby and professional dyno types; advanced pipelines require a paid stack.
Concrete Example: Node.js App Promotion
Assume you have a simple Express app in a GitHub repo. You’ll create two Heroku apps: myapp-staging and myapp-production. Both run on the same stack (heroku-22).
- Connect the repo to Heroku. From the Heroku dashboard, click New → Create new app for staging, then click Connect to GitHub and authorize the repo. Enable automatic deploys for the
mainbranch. - Create the pipeline. In the Heroku dashboard, navigate to Pipelines, click Create pipeline, give it a name (e.g.,
myapp-pipeline), and add the staging app as the first stage. - Add production stage. Click Add app to pipeline, select
myapp-production, and choose Production as the stage. - Deploy to staging. Push a commit:
This triggers a build ongit push heroku mainmyapp-staging. After the build completes, the pipeline shows a new release (e.g.,v42) with the commit SHA. - Promote to production. In the pipeline view, click Promote next to the staging release. Heroku copies the same release ID to the production app. Verify:
heroku releases --app myapp-production # Output includes v42 with the same commit hash - Rollback test. If something breaks, rollback to the previous release:
The production app instantly reverts to the earlier release. The release history remains intact.heroku releases:rollback v41 --app myapp-production
Trade‑Offs and Practical Limits
- Stack requirement. Release Pipelines only work on Heroku stacks (e.g., heroku‑22). Apps on legacy stacks must be upgraded first.
- Manual approval gates. By default, promotions are automatic. If you need a manual review step, configure Pipeline settings → Manual approval before promotion.
- Database migrations. Rolling back a release does not revert database schema changes. Use migration frameworks that support rollbacks (e.g., Sequelize, Flyway) or keep a separate rollback strategy.
- Promotion time. Large apps with many dynos take longer to promote. Plan your deployment window accordingly.
Actionable Next Steps
- Verify your apps run on a supported stack. Run
heroku stack --app <app-name>and upgrade if needed. - Create a pipeline in the dashboard and add your staging and production apps.
- Enable automatic deploys from GitHub for staging, and configure a manual approval step if required.
- Test a promotion and a rollback to confirm the process works.
- Integrate CI: add a GitHub Actions step that runs
heroku releases:promoteon a successful test run.
With Release Pipelines, the tedious, error‑prone parts of deployment become a single, auditable action. The visual flow and built‑in rollback give you confidence that your production environment always runs the exact code you tested in staging.
0 replies
A thoughtful contribution can make all the difference. Be the first to share one.