buildpacks / imgutil

Helpful utilities for working with images
Apache License 2.0
23 stars 41 forks source link

Add interface method, AddOrReuseLayerWithHistory #266

Closed natalieparellano closed 3 months ago

natalieparellano commented 3 months ago

The lifecycle currently does some bookkeeping to map a layer's "id" ("buildpack-id:layer-name") to the SHA of the layer in the previous image. It then compares this SHA to the SHA of the layer directory in the build container to determine if a layer should be added or re-used.

This works fine for layers that have an id (i.e., were created by a buildpack) but for extension layers we don't have a way to construct the mapping and simply want to add the layer if it's not present in the previous image, otherwise re-use it.

An imgutil.Image already has all the info necessary to determine whether a layer should be added or re-used, so adding an interface method is helpful for the lifecycle to avoid having to know anything about the previous image (at least for extension layers).

natalieparellano commented 3 months ago

Branches off https://github.com/buildpacks/imgutil/pull/265