-
Notifications
You must be signed in to change notification settings - Fork 71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RFC Flatten builders #290
RFC Flatten builders #290
Conversation
Signed-off-by: Domenico Luciani <dluciani@vmware.com>
Maintainers, As you review this RFC please queue up issues to be created using the following commands:
Issues(none) |
Thanks for writing this up! For a small nit can you rename your file to As mentioned in WG today:
|
In the case of flattening a builder, how would you determine which layers to flatten? If it is just by buildpack include/exclude flags, what would a user expect to happen when a buildpack is shared across multiple meta buildpacks. Also wondering how the flattening of builders would come into play in a platform like kpack since it doesn't use pack to build builders. |
The file is already called
Uhm, I don't know about the specific need around one or another choice since I wasn't there (I remember that @jjbustamante told me that he has been asked for this implementation) , maybe @natalieparellano has some context about it.
Uhm, let’s say we have something like: flowchart TD
A[CB1]
A --> BP1[BP1]
A --> BP2[BP2]
A --> BP3[BP3]
A --> BP4[BP4]
A --> BP5[BP5]
A --> BP6[BP6]
and I want just to specifically merge BP 1 and BP2, but exclude BP 5 and leave the rest flatten to obtain something like: BP1-BP2 BP5 BP3-BP4-BP6 flowchart TD
A[CB1]
A --> BP1BP2[BP1-BP2]
A --> BP3BP4[BP3-BP4-BP6]
A --> BP5
Does it make sense?
|
Sorry, i meant it should be rename from that with |
Signed-off-by: Domenico Luciani <domenicoleoneluciani@gmail.com>
Signed-off-by: Domenico Luciani <domenicoleoneluciani@gmail.com>
Signed-off-by: Domenico Luciani <dluciani@vmware.com>
Hi @hone, is this good to be voted? |
This section should document breaks to public API and breaks in compatibility due to this RFC's proposed changes. In addition, it should document the proposed steps that one would need to take to work through these changes. Care should be give to include all applicable personas, such as platform developers, buildpack developers, buildpack users and consumers of buildpack images. | ||
--> | ||
# Drawbacks | ||
[drawbacks]: #drawbacks |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It also inhibits the de-dupping of buildpack layers after they are flattened. If we distributed flattened buildpacks, the child-buildpacks can't be de-dupped. This is less of a problem for builders since we don't distribute them the same way.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could we limit this RFC to pack builder create
with flattened layers?
It seems like that's really the long pole, since that's where most people would accumulate more than 127 layers (are there really examples of individual buildpacks that have more 127 child buildpacks?)
I think it makes sense, just want to confirm @ForestEckhardt Paketo is flattening only the builders, right? As an example, I took the Java buildpack from Paketo and count the number of layers there: > crane manifest gcr.io/paketo-buildpacks/java | jq '.layers | length'
27 I got 27, so I think ti is fine. |
I think it's a great idea, as I said during our sync would be better to just focus on the builder part to be sure we focus on deliverying value to our users. I'll modify the RFC accordingly and start creating the first issue about it. Thanks for the feedback everyone! |
From our WG meeting today:
|
Signed-off-by: Domenico Luciani <dluciani@vmware.com>
Hi all, I updated the RFC removing any reference that might not be related to a Builder. |
|
||
Why should we *not* do this? | ||
|
||
It could create artifacts that are not consumable by older platforms. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This use case, only happens for platforms that create ephemeral builders (like pack
and kpack) right? I was looking at how we consume builders at Heroku and I think this change would "just work".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Scoping this to builders minimizes the impact, which I think is a good first step. How many layers is the paketo builder at this point?
I'm moving this to voting with a close of Sept 13th. @jkutner I'll be out for half of next week, so can you handle finalizing this? |
Hey @jkutner, is there anything else I need to do to have this PR merged? 😄 |
Readable