From 25b6477aa84cf18794e40c7df73dd87f52c52508 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Thu, 14 Nov 2024 15:21:37 -0800 Subject: [PATCH] Support alternative media type format Update `ExportedImageTar` media type detection to support `tar+gzip` as well as `tar.gzip`. Recent updates to Docker Desktop appear to have changed the format. Fixes gh-43126 --- .../platform/docker/ExportedImageTar.java | 4 ++-- .../platform/docker/ExportedImageTarTests.java | 2 +- ...-docker-desktop-containerd-alt-mediatype.tar | Bin 0 -> 19968 bytes 3 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/docker/export-docker-desktop-containerd-alt-mediatype.tar diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/ExportedImageTar.java b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/ExportedImageTar.java index ccbd2c0a833..9e7daa38ef3 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/ExportedImageTar.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/ExportedImageTar.java @@ -247,10 +247,10 @@ class ExportedImageTar implements Closeable { } private Compression getCompression(String mediaType) { - if (mediaType.endsWith(".tar.gzip")) { + if (mediaType.endsWith(".tar.gzip") || mediaType.endsWith(".tar+gzip")) { return Compression.GZIP; } - if (mediaType.endsWith(".tar.zstd")) { + if (mediaType.endsWith(".tar.zstd") || mediaType.endsWith(".tar+zstd")) { return Compression.ZSTD; } return Compression.NONE; diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/ExportedImageTarTests.java b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/ExportedImageTarTests.java index 4d9ea93c470..6ba75321e88 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/ExportedImageTarTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/ExportedImageTarTests.java @@ -38,7 +38,7 @@ class ExportedImageTarTests { @ParameterizedTest @ValueSource(strings = { "export-docker-desktop.tar", "export-docker-desktop-containerd.tar", "export-docker-desktop-containerd-manifest-list.tar", "export-docker-engine.tar", "export-podman.tar", - "export-docker-desktop-nested-index.tar" }) + "export-docker-desktop-nested-index.tar", "export-docker-desktop-containerd-alt-mediatype.tar" }) void test(String tarFile) throws Exception { ImageReference reference = ImageReference.of("test:latest"); try (ExportedImageTar exportedImageTar = new ExportedImageTar(reference, diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/docker/export-docker-desktop-containerd-alt-mediatype.tar b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/docker/export-docker-desktop-containerd-alt-mediatype.tar new file mode 100644 index 0000000000000000000000000000000000000000..71be13d0a03858a83bca12eeb5fb5cc79dbae395 GIT binary patch literal 19968 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 TD^+(5x(x{!5-=nXi3I)++QIuU literal 0 HcmV?d00001