Open jromero opened 4 years ago
In order to be compliant with the specification, we need to make the following changes:
Env
field has the environment variable CNB_APP_DIR
set to the application directory of the build environmentEnv
field has the environment variable CNB_LAYERS_DIR
set to a directory in the builderEnv
field has the environment variable CNB_PLATFORM_DIR
set to a directory in the builderEnv
field has the environment variable CNB_PLATFORM_DIR
set to a directory in the builderEnv
field has the environment variable SERVICE_BINDING_ROOT
set to a directory in the builder, if any services are boundio.buildpacks.builder.api
, set to 0.1
io.buildpacks.lifecycle.version
, set to the lifecycle version (greater than 0.9.0
)io.buildpacks.lifecycle.apis
, set to a JSON object representing the lifecycle apis (taken from what we currently set within the io.buildpacks.builder.metadata
)The io.buildpacks.lifecycle.apis
data should look like:
{
"buildpack": {
"deprecated": ["<list of versions>"],
"supported": ["<list of versions>"]
},
"platform": {
"deprecated": ["<list of versions>"],
"supported": ["<list of versions>"]
}
}
io.buildpacks.builder.metadata
labels to match the RFC metadata field, by removing the lifecycle
top-level key (and all sub information)We should follow all of the spec recommendations for what a build image should look like, which would require us also setting:
Labels
field has the label io.buildpacks.stack.maintainer
set to the name of the stack maintainer.Labels
field has the label io.buildpacks.stack.homepage
set to the homepage of the stack.Labels
field has the label io.buildpacks.stack.distro.name
set to the name of the stack's OS distro.Labels
field has the label io.buildpacks.stack.distro.version
set to the version of the stack's OS distro.Labels
field has the label io.buildpacks.stack.released
set to the release date of the stack.Labels
field has the label io.buildpacks.stack.description
set to the description of the stack.Labels
field has the label io.buildpacks.stack.metadata
set to additional metadata related to the stack.Waiting for spec PR https://github.com/buildpacks/spec/pull/193 to be approved.
Hello @jromero! I am relatively new to buildpacks project, but would love to get involved and potentially contribute. Any pointers to get started?
Here are a few resources I think would help (in some reasonable order):
Places to get help:
#spec
is a good channel for this issue, #general
works better for general questionsThanks for the elaborated response @jromero! Excited to get started! :)
Update from ongoing conversation:
During our discussion today @ecasey and I came to the realization that maybe we’ve been thinking about the builder spec wrong.
We’d like to propose that the builder is just one of the components that may be produced and distributed as part of the distribution spec.
Envision the distribution spec not only detailing how buildpacks are distributed but also how other components are distributed. ie. “If you want to distribute an image of the run image, it must be done as such.” Same for build image, buildpacks (already in place), lifecycle, etc. Last but not least, distributing a builder would simply refer to the other components it must include plus any additional considerations.
After a bunch of discussion, we ended up creating a PR to add the builder spec to the distribution spec. Once that's done, we can come back to this issue and check what else is required next
Block by spec PR 363
Description
The builder has recently been spec'd via RFC (official spec upcoming).
Proposed solution
0.1
with proper necessary changes to make it compatible.