@@ -135,7 +135,7 @@ func ConvertAndOutput(config types.StackerConfig, tag, name string, layerType ty
135135 bundlePath := overlayPath (config .RootFSDir , theLayer .Digest )
136136 overlayDir := path .Join (bundlePath , "overlay" )
137137 // generate blob
138- blob , mediaType , rootHash , err := generateBlob (layerType , overlayDir , config .OCIDir )
138+ blob , mediaType , rootHash , err := generateBlob (layerType , overlayDir , config .OCIDir , true )
139139 if err != nil {
140140 return err
141141 }
@@ -293,15 +293,23 @@ func (o *overlay) Repack(name string, layerTypes []types.LayerType, sfm types.St
293293}
294294
295295// generateBlob generates either a tar blob or a squashfs blob based on layerType
296- func generateBlob (layerType types.LayerType , contents string , ociDir string ) (io.ReadCloser , string , string , error ) {
296+ func generateBlob (layerType types.LayerType , contents string , ociDir string , compress bool ) (io.ReadCloser , string , string , error ) {
297297 var blob io.ReadCloser
298298 var err error
299299 var mediaType string
300300 var rootHash string
301301 if layerType .Type == "tar" {
302302 packOptions := layer.RepackOptions {TranslateOverlayWhiteouts : true }
303303 blob = layer .GenerateInsertLayer (contents , "/" , false , & packOptions )
304- mediaType = ispec .MediaTypeImageLayer
304+ if ! compress {
305+ mediaType = ispec .MediaTypeImageLayer
306+ } else {
307+ blob , err = mutate .GzipCompressor .WithOpt (gzipBlockSize ).Compress (blob )
308+ if err != nil {
309+ return nil , "" , "" , err
310+ }
311+ mediaType = ispec .MediaTypeImageLayerGzip
312+ }
305313 } else {
306314 blob , mediaType , rootHash , err = squashfs .MakeSquashfs (ociDir , contents , nil , layerType .Verity )
307315 if err != nil {
@@ -435,7 +443,7 @@ func generateLayer(config types.StackerConfig, oci casext.Engine, mutators []*mu
435443 mutator := mutators [i ]
436444 var desc ispec.Descriptor
437445
438- blob , mediaType , rootHash , err := generateBlob (layerType , dir , config .OCIDir )
446+ blob , mediaType , rootHash , err := generateBlob (layerType , dir , config .OCIDir , false )
439447 if err != nil {
440448 return false , err
441449 }
0 commit comments