Browse Source

Merge branch '3.0.x' into 3.1.x

Closes gh-37183
pull/38706/head
Andy Wilkinson 2 years ago
parent
commit
c562e8e01f
  1. 12
      spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/type/ImageReference.java
  2. 8
      spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/type/ImageReferenceTests.java

12
spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/type/ImageReference.java

@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@
package org.springframework.boot.buildpack.platform.docker.type;
import java.io.File;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -260,7 +261,8 @@ public final class ImageReference { @@ -260,7 +261,8 @@ public final class ImageReference {
path = path.substring(0, tagSplit) + remainder;
}
}
Assert.isTrue(Regex.PATH.matcher(path).matches(),
Assert.isTrue(isLowerCase(path) && matchesPathRegex(path),
() -> "Unable to parse image reference \"" + value + "\". "
+ "Image reference must be in the form '[domainHost:port/][path/]name[:tag][@digest]', "
+ "with 'path' and 'name' containing only [a-z0-9][.][_][-]");
@ -268,6 +270,14 @@ public final class ImageReference { @@ -268,6 +270,14 @@ public final class ImageReference {
return new ImageReference(name, tag, digest);
}
private static boolean isLowerCase(String path) {
return path.toLowerCase(Locale.ENGLISH).equals(path);
}
private static boolean matchesPathRegex(String path) {
return Regex.PATH.matcher(path).matches();
}
/**
* Create a new {@link ImageReference} from the given {@link ImageName}.
* @param name the image name

8
spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/type/ImageReferenceTests.java

@ -180,6 +180,14 @@ class ImageReferenceTests { @@ -180,6 +180,14 @@ class ImageReferenceTests {
.withMessageContaining("Unable to parse image reference");
}
@Test
void ofWhenContainsUpperCaseThrowsException() {
assertThatIllegalArgumentException()
.isThrownBy(() -> ImageReference
.of("europe-west1-docker.pkg.dev/aaaaaa-bbbbb-123456/docker-registry/bootBuildImage:0.0.1"))
.withMessageContaining("Unable to parse image reference");
}
@Test
void forJarFile() {
assertForJarFile("spring-boot.2.0.0.BUILD-SNAPSHOT.jar", "library/spring-boot", "2.0.0.BUILD-SNAPSHOT");

Loading…
Cancel
Save