Buildpacks

What's a buildpack?

The concept of buildpack was introduced by Heroku. It is a simple API to define what needs to be done to generate a self-contained version of an application, ready to be deployed. You can find more about the Buildpack API by following this link.

A buildpack has three parts:

  • a detection step, where the buildpack attempts to find out whether it can process the application (e.g. the Ruby buildpack checks whether a Gemfile exists, among other things).

  • a compilation step, where the buildpack will download dependencies, launch tasks, and generally make everything needed to "compile" the application into a self-contained artefact.

  • a release step, which is used to set environment variables and various other things needed by the application to run.

Officially supported buildpacks

Language URL
Ruby https://github.com/pkgr/heroku-buildpack-ruby#universal
NodeJS https://github.com/heroku/heroku-buildpack-nodejs#v58
Go https://github.com/kr/heroku-buildpack-go#master

Custom buildpacks

One of the benefits of having a well-defined buildpack API is that you can create one yourself, and use it as the source buildpack for your application (see Customizing the build).

For instance, although C++ applications are not yet officially supported, you could create a buildpack that adds the necessary steps to compile the code and declare the relevant process types.