Heroku is a cloud Platform as a Service (PaaS) based on containers. It provides developers with an elegant, flexible, and user-friendly platform to deploy, manage, and scale modern applications, offering the simplest path to bring apps to market. Extending Heroku can be accomplished by building add-ons, developing plug ins for Heroku CLI and more.
Thank you for reading this post, don't forget to subscribe!Extending Heroku
As of November 28th, 2022, Heroku discontinues its free tier, resulting in the shutdown of free Heroku Dynos, Postgres, and Redis servers. According to the Heroku Documentation, non-Enterprise users will witness the deletion of free databases starting from this date. For Enterprise users, hobby-dev databases associated with an Enterprise Account or Team will be converted to the mini tier.
Regarding size limits, the maximum slug size after compression is 500 MB, a threshold that should accommodate most apps comfortably. In terms of the Heroku API, it is rate-limited at 5,000 requests per connection per day. Any attempt to exceed this limit results in a 429 Too Many Requests status, with the response message indicating when the next API request can be expected.
AWS, an Infrastructure as a Service (IaaS) platform, provides developers with the necessary products to establish a development environment. In contrast, Heroku operates as a Platform as a Service (PaaS), offering a ready-to-use environment for developers to deploy code, perform simple configurations, and run applications.
Extending the Heroku platform is possible through various means:
- Utilizing the Platform API for various app management tasks.
- Implementing app webhooks to incorporate proactive platform notifications into workflows.
- Building add-ons that Heroku customers can provision and use with their own apps.
- Developing plugins for the Heroku CLI.
- Creating buildpacks to support new languages or behaviors on Heroku.
Review Apps
Review Apps on Heroku execute code in GitHub pull requests within isolated Heroku apps that can be easily disposed of. Each Review App is assigned a unique URL, providing an excellent avenue for proposing, testing, and merging code changes. Configuration options allow for automatic or manual creation of Review Apps from the app’s Pipeline page, requiring both Heroku Pipelines and GitHub integration for utilization.
For users new to Review Apps, the setup involves connecting the pipeline to the corresponding GitHub repository in the Heroku Dashboard’s Settings tab. Additionally, configuring an app.json
may be necessary for those unfamiliar with Review Apps, with sensitive config variable values set in the pipeline’s settings.
Permissions for all Review Apps and CI Apps within a pipeline are managed through the pipeline access tab. The process of creating Review Apps involves deploying the HEAD commit of the associated branch when manually created or automatically when a pull request is opened. Review Apps are automatically destroyed upon the closure of the associated pull request.
Viewing and managing Review Apps can be done through links available in GitHub’s pull request Conversation tab or the Heroku Dashboard’s Review Apps column. The app.json
file in the app’s GitHub repo configures Review Apps, while sensitive environment variables are set in the Review App config vars section of the pipeline’s settings.
Environments in app.json
follow a similar pattern to Heroku CI, and Review Apps support the “environments” key. Review App names rely on randomness to prevent collisions, and a postdeploy script in the app.json
file facilitates one-time setup tasks for the app and databases. A release phase allows for continuous execution with each change to a pull request.
An optional pr-predestroy
script in app.json
runs when Review Apps are destroyed after the associated pull request is merged or closed. Injected environment variables, such as HEROKU_APP_NAME
, HEROKU_BRANCH
, and HEROKU_PR_NUMBER
, provide essential information for scripting and automation.
Content updated December 2022.