Comments (6)
Because buildpack.id
will be required in in buildpack.toml
in v3, and is not used in Heroku's v2
, I think the registry can infer schema version by looking for this field. In this way, we can "default" to the lowest version (or really the lowest appropriate major version) as @nebhale suggested a while back.
Curious if others think this is a safe approach.
from spec.
The schema is in the spec, so we could use a single version number to represent both. E.g.,
version = "v3.0.0-alpha1"
or just:
version = "v3alpha1"
from spec.
@sclevine when you say "schema is in the spec" do you mean that they should/would be versioned equivalently? Or do you mean there's a already a key in the spec?
I think versioning the schema with the spec is fine. I was probably just being paranoid when I thought of it.
The problem with a version
key is that we already have buildpack.version
which will be used to version the buildpack itself. My questions then are:
- Does the compatibility version belong in
metadata
? - Do we need another top level key?
- Is the compatibility version required?
- Should the compatibility version be strict?
I've made a life choice not to get involved in version pattern arguments. So I'll leave that part to others :)
from spec.
Ah, sorry, I meant the schema is defined in a section of the spec, not that the spec already defines a field for the schema version.
Maybe we should version them separately, but then specify all the allowed the schema versions for each file in the spec? Then we won't end up with many different schema versions for a given file that refer to the same schema. It could be useful for defining compatibility between older and newer files when they are used together.
[metadata]
was intended for buildpack-specific stuff, and nesting the schema version might make it more difficult to change the structure. Maybe we could use a top-level called field called schema
or format
? I'm okay with it being required, as long as we can support multiple versions of the files for a given version of the lifecycle/spec.
Format wise, I'm liking @jchesterpivotal's suggestion to use gclouds's API versioning format.
from spec.
Epiphany: if we bind the schema version to the compatibility version (i.e. the v3
version) then the registry can use this to distinguish v2 and v3 buildpacks.
from spec.
I believe #61 accomplishes the goal stated here. Feel free to reopen if there are any remaining concerns
from spec.
Related Issues (20)
- How to mount my own maven setting.xml HOT 2
- [RFC #0105] Buildpack API changes for run image extension (Dockerfiles phase 3) HOT 1
- SBOM- Cosign spec HOT 5
- Is it possible for an inline buildpack to add [[requires]] and [requires.metadata] to the build plan? HOT 1
- SBOM score HOT 2
- Regarding ENTRYPOINT Launcher HOT 4
- Lifecycle specification HOT 3
- [RFC #0111] Support insecure registries HOT 1
- Build Image ABI Compatibility
- Making builpack image extensions feature non-experimental HOT 14
- [RFC 0125] Lifecycle parallel export HOT 1
- Launcher CNB_PLATFORM_API failed to get platform API version HOT 6
- Support buildpack.toml targets for Buildpack API 0.10 HOT 1
- Platform Spec is ambiguous about usage of `extender` HOT 10
- Support run image rebase based on semver tags HOT 6
- Remove or clarify `io.buildpacks.base.id` (it's currently unused)
- Specification for `CNB_STACK_ID` changed when it was deprecated in Platform API 0.12 HOT 1
- Add a way for Buildpacks to enable verbose output HOT 5
- Buildpack API inconsistency around naming/data-type of `targets.distros.version` field in `buildpack.toml`
- Add more data to report.toml
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from spec.