A builder configuration schema is as follows:
A human-readable description of the builder, to be shown in
pack inspect-builder -h for more information).
A list of buildpacks, each with the following fields:
id (string, optional)
An identifier for the buildpack. Must match ID specified in buildpack’s
version (string, optional)
The version of the buildpack. Must match version specified in buildpack’s
A URL or path to an archive, a packaged buildpack (saved as a
.cnb file), or a directory. If path is relative, it must be relative to the
A list of buildpack groups. This list determines the order in which groups of buildpacks will be tested during detection. Detection is a phase of the lifecycle where buildpacks are tested, one group at a time, for compatibility with the provided application source code. The first group whose non-optional buildpacks all pass detection will be the group selected for the remainder of the build. Each group currently contains a single required field:
group (list, required)
A set of buildpack references. Each buildpack reference specified has the following fields:
id (string, required)
The identifier of a buildpack from the configuration’s top-level
buildpacks list. Buildpacks with the same ID may
appear in multiple groups at once but never in the same group.
version (string, optional, default: inferred)
The version of the buildpack being referred to. This field may be omitted if exactly one version of the buildpack occurs in either the top-level
buildpacks list or those buildpacks’ dependencies.
optional (boolean, optional, default:
Whether or not this buildpack is optional during detection.
The stack to use for the builder. See Working with stacks for more information about this field. It contains the following fields:
id (required, string)
Identifier for the stack
build-image (required, string)
Build image for the stack
run-image (required, string)
Run image for the stack
run-image-mirrors (optional, string list)
Run image mirrors for the stack
The lifecycle to embed into the builder. It must contain at most one the following fields:
version (string, optional)
The version of the lifecycle (semver format) to download. If specified,
uri must not be provided.
uri (string, optional)
A URL or path to an archive. If specified,
version must not be provided.
uriare both omitted,
lifecycledefaults to the version that was last released at the time of
pack’s release. In other words, for a particular version of
pack, this default will not change despite new lifecycle versions being released.
Currently, when specifying a URI to a buildpack or lifecycle, only
tgz archive types are supported.