From 1e7da4d3ca007d9e45dfbed61ca158bf548907b6 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Thu, 11 Jun 2020 12:31:29 -0700 Subject: [PATCH] Allow digest builder references Update `BuildRequest` to also allow digest based references. Closes gh-21879 --- .../boot/buildpack/platform/build/BuildRequest.java | 5 +++-- .../boot/buildpack/platform/build/BuildRequestTests.java | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/build/BuildRequest.java b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/build/BuildRequest.java index 06b62043064..7ba2003b7a6 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/build/BuildRequest.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/build/BuildRequest.java @@ -84,8 +84,9 @@ public class BuildRequest { */ public BuildRequest withBuilder(ImageReference builder) { Assert.notNull(builder, "Builder must not be null"); - return new BuildRequest(this.name, this.applicationContent, builder.inTaggedForm(), this.creator, this.env, - this.cleanCache, this.verboseLogging); + builder = (builder.getDigest() != null) ? builder : builder.inTaggedForm(); + return new BuildRequest(this.name, this.applicationContent, builder, this.creator, this.env, this.cleanCache, + this.verboseLogging); } /** diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/build/BuildRequestTests.java b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/build/BuildRequestTests.java index ec116a2dd09..a6b08425b58 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/build/BuildRequestTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/build/BuildRequestTests.java @@ -98,6 +98,14 @@ public class BuildRequestTests { assertThat(request.getBuilder().toString()).isEqualTo("docker.io/spring/builder:latest"); } + @Test + void withBuilderWhenHasDigestUpdatesBuilder() throws IOException { + BuildRequest request = BuildRequest.forJarFile(writeTestJarFile("my-app-0.0.1.jar")).withBuilder(ImageReference + .of("spring/builder:@sha256:6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d")); + assertThat(request.getBuilder().toString()).isEqualTo( + "docker.io/spring/builder:@sha256:6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d"); + } + @Test void withCreatorUpdatesCreator() throws IOException { BuildRequest request = BuildRequest.forJarFile(writeTestJarFile("my-app-0.0.1.jar"));