Skip to content

0.10.0

Compare
Choose a tag to compare
@SgtSilvio SgtSilvio released this 31 May 14:58
· 323 commits to main since this release

🌟 Features

  • Enable reuse of OciCopySpec similar to org.gradle.api.file.CopySpec
    • Added OciExtension.copySpec() and OciExtension.copySpec(Action<in OciCopySpec>) factory methods
    • Added OciCopySpec.with(OciCopySpec)
  • New features for layer creation in OciLayerTask:
    • Enable configuration of digest algorithm via digestAlgorithm property of type OciDigestAlgorithm with options SHA_256 (default) and SHA_512
    • Enable configuration of layer compression via compression property of type OciLayerCompression with options NONE and GZIP (default)
    • Added mediaType provider of type String derived from compression
    • Added extension property of type String with convention derived from compression (tar for NONE, tgz for GZIP)
    • Replaced digestFile with digest provider of type OciDigest
    • Replaced diffIdFile with diffId provider of type OciDigest
    • Added size provider of type Long
  • Enable access to the org.gradle.api.artifacts.Configuration that belongs to an image definition via OciImageDefinition.configuration
  • Enable use of providers for capabilities via OciImageDefinition.Capabilities.add(Provider<String>)

✨ Improvements

  • More robust detection of component and layer files in resolved OCI image dependencies
    • Allows different layer artifacts with the same digest
    • Allows different variants to reference the same layer artifact
  • Added normalization of some platform variants to support images produced with containerd normalization (related issue: docker-library/official-images#16859):
    • The default variant for the architecture arm64 is v8, so for example linux/arm64 is the same as linux/arm64/v8
    • The default variant for the architecture arm is v7, so for example linux/arm is the same as linux/arm/v7
  • The destination directory of an OciCopySpec is only created if there are source files
  • Simplified build output of layers
    • Removed one subfolder level: oci/images/$imageDefName/$layerName => oci/images/$imageDefName
    • Replaced .diffId and .digest files with a single .properties file
  • Improved naming of layers downloaded from a registry
    • Include the layer digest (truncated) into the filename instead of a counter so the name is not dependent on the order of layers
    • Include file extension derived from the media type
  • Transformation of image from a registry to an OCI component is now also deterministic in the edge case of duplicate platforms in the image index
  • Renamed OciLayerTask.tarFile to file
  • Renamed OciComponentTask.componentFile to file
  • Renamed OciDigestAlgorithm.ociPrefix to id
  • Renamed OciDigestAlgorithm.algorithmName to standardName

🐞 Bug fixes

  • The default capability for image definitions with a name other than main is now added to the Gradle configuration and not only to the OCI component

ℹ️ Miscellaneous

  • Updated dependencies