From f3d717e97ab752c8323ee07752d200298d43e97b Mon Sep 17 00:00:00 2001 From: Scott Frederick Date: Wed, 29 Apr 2020 14:05:05 -0500 Subject: [PATCH] Use paketo-buildpacks/builder as default builder This commit changes the default builder image from `cloudfoundry/cnb:bionic-platform-api-0.2` to `gcr.io/paketo-buildpacks/builder:base-platform-api-0.3`. It also uses a `paketo-buildpacks/builder` image instead of a `cloudfoundry/cnb` image to test compatibility with lifecycle v2 and uses paketo naming instead of cloudfoundry when mocking builder interactions. Some adjustments to lifecycle phases were also made to align more closely with the pack CLI. Fixes gh-21066 --- .../platform/build/AbstractBuildLog.java | 8 ++++++ .../buildpack/platform/build/BuildLog.java | 8 ++++++ .../platform/build/BuildRequest.java | 2 +- .../buildpack/platform/build/Lifecycle.java | 14 ++++++++--- .../platform/build/BuildRequestTests.java | 4 +-- .../platform/build/BuilderTests.java | 6 ++--- .../platform/build/LifecycleTests.java | 10 ++++++++ .../docker/DockerApiIntegrationTests.java | 2 +- .../platform/docker/DockerApiTests.java | 6 ++--- .../platform/docker/PullUpdateEventTests.java | 2 +- .../platform/json/JsonStreamTests.java | 7 ++++-- .../boot/buildpack/platform/build/image.json | 6 ++--- ...on => lifecycle-analyzer-clean-cache.json} | 2 +- .../platform/build/lifecycle-analyzer.json | 2 +- .../build/run-image-with-bad-stack.json | 4 +-- .../platform/docker/pull-stream.json | 6 ++--- .../platform/docker/pull-update-minimal.json | 2 +- .../buildpack/platform/docker/type/image.json | 4 +-- .../boot/buildpack/platform/json/stream.json | 6 ++--- .../docs/asciidoc/packaging-oci-image.adoc | 2 +- .../BootBuildImageIntegrationTests.java | 25 +++++++++---------- .../tasks/bundling/BootBuildImageTests.java | 2 +- ...tionTests-buildsImageWithCustomName.gradle | 2 +- ...ationTests-buildsImageWithV2Builder.gradle | 3 ++- .../docs/asciidoc/packaging-oci-image.adoc | 2 +- .../boot/maven/BuildImageTests.java | 10 +++++--- .../projects/build-image-v2-builder/pom.xml | 2 +- .../boot/maven/ImageTests.java | 2 +- 28 files changed, 95 insertions(+), 56 deletions(-) rename spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/build/{lifecycle-cacher.json => lifecycle-analyzer-clean-cache.json} (70%) diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/build/AbstractBuildLog.java b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/build/AbstractBuildLog.java index cf9a5d5b59..7a78d5cbeb 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/build/AbstractBuildLog.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/build/AbstractBuildLog.java @@ -29,6 +29,7 @@ import org.springframework.boot.buildpack.platform.docker.type.VolumeName; * Base class for {@link BuildLog} implementations. * * @author Phillip Webb + * @author Scott Frederick * @since 2.3.0 */ public abstract class AbstractBuildLog implements BuildLog { @@ -73,6 +74,13 @@ public abstract class AbstractBuildLog implements BuildLog { return (event) -> log(prefix + event); } + @Override + public void skippingPhase(String name, String reason) { + log(); + log(" > Skipping " + name + " " + reason); + log(); + } + @Override public void executedLifecycle(BuildRequest request) { log(); diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/build/BuildLog.java b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/build/BuildLog.java index ed71504a92..cb82832b7a 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/build/BuildLog.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/build/BuildLog.java @@ -29,6 +29,7 @@ import org.springframework.boot.buildpack.platform.docker.type.VolumeName; * Callback interface used to provide {@link Builder} output logging. * * @author Phillip Webb + * @author Scott Frederick * @since 2.3.0 * @see #toSystemOut() */ @@ -86,6 +87,13 @@ public interface BuildLog { */ Consumer runningPhase(BuildRequest request, String name); + /** + * Log that a specific phase is being skipped. + * @param name the name of the phase + * @param reason the reason the phase is skipped + */ + void skippingPhase(String name, String reason); + /** * Log that the lifecycle has executed. * @param request the build request 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 7ed6ffdfa4..06b6204306 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 @@ -36,7 +36,7 @@ import org.springframework.util.Assert; */ public class BuildRequest { - static final String DEFAULT_BUILDER_IMAGE_NAME = "cloudfoundry/cnb:bionic-platform-api-0.2"; + static final String DEFAULT_BUILDER_IMAGE_NAME = "gcr.io/paketo-buildpacks/builder:base-platform-api-0.3"; private static final ImageReference DEFAULT_BUILDER = ImageReference.of(DEFAULT_BUILDER_IMAGE_NAME); diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/build/Lifecycle.java b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/build/Lifecycle.java index a477523784..673b563a3d 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/build/Lifecycle.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/build/Lifecycle.java @@ -36,6 +36,7 @@ import org.springframework.util.Assert; * application. * * @author Phillip Webb + * @author Scott Frederick */ class Lifecycle implements Closeable { @@ -116,7 +117,12 @@ class Lifecycle implements Closeable { } run(detectPhase()); run(analyzePhase()); - run(restorePhase()); + if (this.request.isCleanCache()) { + this.log.skippingPhase("restorer", "due to cleaning cache"); + } + else { + run(restorePhase()); + } run(buildPhase()); run(exportPhase()); this.log.executedLifecycle(this.request); @@ -144,12 +150,14 @@ class Lifecycle implements Closeable { Phase phase = createPhase("analyzer"); phase.withDaemonAccess(); phase.withLogLevelArg(); + phase.withArgs("-daemon"); if (this.request.isCleanCache()) { phase.withArgs("-skip-layers"); } - phase.withArgs("-daemon"); + else { + phase.withArgs("-cache-dir", Directory.CACHE); + } phase.withArgs("-layers", Directory.LAYERS); - phase.withArgs("-cache-dir", Directory.CACHE); phase.withArgs(this.request.getName()); phase.withBinds(this.buildCacheVolume, Directory.CACHE); return phase; 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 c8d87038ed..ec116a2dd0 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 @@ -55,7 +55,7 @@ public class BuildRequestTests { writeTestJarFile(jarFile); BuildRequest request = BuildRequest.forJarFile(jarFile); assertThat(request.getName().toString()).isEqualTo("docker.io/library/my-app:0.0.1"); - assertThat(request.getBuilder().toString()).isEqualTo("docker.io/" + BuildRequest.DEFAULT_BUILDER_IMAGE_NAME); + assertThat(request.getBuilder().toString()).isEqualTo(BuildRequest.DEFAULT_BUILDER_IMAGE_NAME); assertThat(request.getApplicationContent(Owner.ROOT)).satisfies(this::hasExpectedJarContent); assertThat(request.getEnv()).isEmpty(); } @@ -66,7 +66,7 @@ public class BuildRequestTests { writeTestJarFile(jarFile); BuildRequest request = BuildRequest.forJarFile(ImageReference.of("test-app"), jarFile); assertThat(request.getName().toString()).isEqualTo("docker.io/library/test-app:latest"); - assertThat(request.getBuilder().toString()).isEqualTo("docker.io/" + BuildRequest.DEFAULT_BUILDER_IMAGE_NAME); + assertThat(request.getBuilder().toString()).isEqualTo(BuildRequest.DEFAULT_BUILDER_IMAGE_NAME); assertThat(request.getApplicationContent(Owner.ROOT)).satisfies(this::hasExpectedJarContent); assertThat(request.getEnv()).isEmpty(); } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/build/BuilderTests.java b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/build/BuilderTests.java index 62c22a0092..594d1b3fd9 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/build/BuilderTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/build/BuilderTests.java @@ -72,7 +72,7 @@ class BuilderTests { DockerApi docker = mockDockerApi(); Image builderImage = loadImage("image.json"); Image runImage = loadImage("run-image.json"); - given(docker.image().pull(eq(ImageReference.of("docker.io/" + BuildRequest.DEFAULT_BUILDER_IMAGE_NAME)), any())) + given(docker.image().pull(eq(ImageReference.of(BuildRequest.DEFAULT_BUILDER_IMAGE_NAME)), any())) .willAnswer(withPulledImage(builderImage)); given(docker.image().pull(eq(ImageReference.of("docker.io/cloudfoundry/run:base-cnb")), any())) .willAnswer(withPulledImage(runImage)); @@ -96,7 +96,7 @@ class BuilderTests { DockerApi docker = mockDockerApi(); Image builderImage = loadImage("image.json"); Image runImage = loadImage("run-image-with-bad-stack.json"); - given(docker.image().pull(eq(ImageReference.of("docker.io/" + BuildRequest.DEFAULT_BUILDER_IMAGE_NAME)), any())) + given(docker.image().pull(eq(ImageReference.of(BuildRequest.DEFAULT_BUILDER_IMAGE_NAME)), any())) .willAnswer(withPulledImage(builderImage)); given(docker.image().pull(eq(ImageReference.of("docker.io/cloudfoundry/run:base-cnb")), any())) .willAnswer(withPulledImage(runImage)); @@ -112,7 +112,7 @@ class BuilderTests { DockerApi docker = mockDockerApiLifecycleError(); Image builderImage = loadImage("image.json"); Image runImage = loadImage("run-image.json"); - given(docker.image().pull(eq(ImageReference.of("docker.io/" + BuildRequest.DEFAULT_BUILDER_IMAGE_NAME)), any())) + given(docker.image().pull(eq(ImageReference.of(BuildRequest.DEFAULT_BUILDER_IMAGE_NAME)), any())) .willAnswer(withPulledImage(builderImage)); given(docker.image().pull(eq(ImageReference.of("docker.io/cloudfoundry/run:base-cnb")), any())) .willAnswer(withPulledImage(runImage)); diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/build/LifecycleTests.java b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/build/LifecycleTests.java index cda3a5febf..183e443fa0 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/build/LifecycleTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/build/LifecycleTests.java @@ -128,6 +128,11 @@ class LifecycleTests { given(this.docker.container().wait(any())).willReturn(ContainerStatus.of(0, null)); BuildRequest request = getTestRequest().withCleanCache(true); createLifecycle(request).execute(); + assertPhaseWasRun("detector", withExpectedConfig("lifecycle-detector.json")); + assertPhaseWasRun("analyzer", withExpectedConfig("lifecycle-analyzer-clean-cache.json")); + assertPhaseWasNotRun("restorer"); + assertPhaseWasRun("builder", withExpectedConfig("lifecycle-builder.json")); + assertPhaseWasRun("exporter", withExpectedConfig("lifecycle-exporter.json")); VolumeName name = VolumeName.of("pack-cache-b35197ac41ea.build"); verify(this.docker.volume()).delete(name, true); } @@ -201,6 +206,11 @@ class LifecycleTests { configConsumer.accept(this.configs.get(containerReference.toString())); } + private void assertPhaseWasNotRun(String name) { + ContainerReference containerReference = ContainerReference.of("lifecycle-" + name); + assertThat(this.configs.get(containerReference.toString())).isNull(); + } + private IOConsumer withExpectedConfig(String name) { return (config) -> { InputStream in = getClass().getResourceAsStream(name); diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/DockerApiIntegrationTests.java b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/DockerApiIntegrationTests.java index 4ac2202a84..b5242e2be6 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/DockerApiIntegrationTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/DockerApiIntegrationTests.java @@ -35,7 +35,7 @@ class DockerApiIntegrationTests { @Test void pullImage() throws IOException { - this.docker.image().pull(ImageReference.of("cloudfoundry/cnb:bionic"), + this.docker.image().pull(ImageReference.of("gcr.io/paketo-buildpacks/builder:base"), new TotalProgressPullListener(new TotalProgressBar("Pulling: "))); } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/DockerApiTests.java b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/DockerApiTests.java index f9dbf745b3..8abddb3996 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/DockerApiTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/DockerApiTests.java @@ -145,10 +145,10 @@ class DockerApiTests { @Test void pullPullsImageAndProducesEvents() throws Exception { - ImageReference reference = ImageReference.of("cloudfoundry/cnb:bionic"); - URI createUri = new URI(IMAGES_URL + "/create?fromImage=docker.io%2Fcloudfoundry%2Fcnb%3Abionic"); + ImageReference reference = ImageReference.of("gcr.io/paketo-buildpacks/builder:base"); + URI createUri = new URI(IMAGES_URL + "/create?fromImage=gcr.io%2Fpaketo-buildpacks%2Fbuilder%3Abase"); String imageHash = "4acb6bfd6c4f0cabaf7f3690e444afe51f1c7de54d51da7e63fac709c56f1c30"; - URI imageUri = new URI(IMAGES_URL + "/docker.io/cloudfoundry/cnb@sha256:" + imageHash + "/json"); + URI imageUri = new URI(IMAGES_URL + "/gcr.io/paketo-buildpacks/builder@sha256:" + imageHash + "/json"); given(http().post(createUri)).willReturn(responseOf("pull-stream.json")); given(http().get(imageUri)).willReturn(responseOf("type/image.json")); Image image = this.api.pull(reference, this.pullListener); diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/PullUpdateEventTests.java b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/PullUpdateEventTests.java index afe606b779..0845e9374c 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/PullUpdateEventTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/PullUpdateEventTests.java @@ -45,7 +45,7 @@ class PullUpdateEventTests extends AbstractJsonTests { PullImageUpdateEvent event = getObjectMapper().readValue(getContent("pull-update-minimal.json"), PullImageUpdateEvent.class); assertThat(event.getId()).isNull(); - assertThat(event.getStatus()).isEqualTo("Status: Downloaded newer image for cloudfoundry/cnb:bionic"); + assertThat(event.getStatus()).isEqualTo("Status: Downloaded newer image for packeto-buildpacks/cnb:base"); assertThat(event.getProgressDetail()).isNull(); assertThat(event.getProgress()).isNull(); } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/json/JsonStreamTests.java b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/json/JsonStreamTests.java index 1dfbb4a667..f7c290838a 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/json/JsonStreamTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/json/JsonStreamTests.java @@ -29,6 +29,7 @@ import static org.assertj.core.api.Assertions.assertThat; * Tests for {@link JsonStream}. * * @author Phillip Webb + * @author Scott Frederick */ class JsonStreamTests extends AbstractJsonTests { @@ -43,7 +44,8 @@ class JsonStreamTests extends AbstractJsonTests { List result = new ArrayList<>(); this.jsonStream.get(getContent("stream.json"), result::add); assertThat(result).hasSize(595); - assertThat(result.get(594).toString()).contains("Status: Downloaded newer image for cloudfoundry/cnb:bionic"); + assertThat(result.get(594).toString()) + .contains("Status: Downloaded newer image for packeto-buildpacks/cnb:base"); } @Test @@ -52,7 +54,8 @@ class JsonStreamTests extends AbstractJsonTests { this.jsonStream.get(getContent("stream.json"), TestEvent.class, result::add); assertThat(result).hasSize(595); assertThat(result.get(1).getId()).isEqualTo("5667fdb72017"); - assertThat(result.get(594).getStatus()).isEqualTo("Status: Downloaded newer image for cloudfoundry/cnb:bionic"); + assertThat(result.get(594).getStatus()) + .isEqualTo("Status: Downloaded newer image for packeto-buildpacks/cnb:base"); } /** diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/build/image.json b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/build/image.json index 9b4206982c..72836736f0 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/build/image.json +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/build/image.json @@ -1,11 +1,11 @@ { "Id": "sha256:44cc64492fb6a6d78d3e6d087f380ae6e479aa1b2c79823b32cdacfcc2f3d715", "RepoTags": [ - "cloudfoundry/cnb:bionic", - "cloudfoundry/cnb:bionic-platform-api-0.3" + "paketo-buildpacks/cnb:base", + "paketo-buildpacks/builder:base-platform-api-0.2" ], "RepoDigests": [ - "cloudfoundry/cnb@sha256:5b03a853e636b78c44e475bbc514e2b7b140cc41cca8ab907e9753431ae8c0b0" + "packeto-buidpacks/cnb@sha256:5b03a853e636b78c44e475bbc514e2b7b140cc41cca8ab907e9753431ae8c0b0" ], "Parent": "", "Comment": "", diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/build/lifecycle-cacher.json b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/build/lifecycle-analyzer-clean-cache.json similarity index 70% rename from spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/build/lifecycle-cacher.json rename to spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/build/lifecycle-analyzer-clean-cache.json index b8cf97817b..47b9218f2e 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/build/lifecycle-cacher.json +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/build/lifecycle-analyzer-clean-cache.json @@ -1,7 +1,7 @@ { "User" : "root", "Image" : "pack.local/ephemeral-builder", - "Cmd" : [ "/lifecycle/cacher", "-path", "/cache", "-layers", "/layers" ], + "Cmd" : [ "/lifecycle/analyzer", "-daemon", "-skip-layers", "-layers", "/layers", "docker.io/library/my-application:latest" ], "Labels" : { "author" : "spring-boot" }, diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/build/lifecycle-analyzer.json b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/build/lifecycle-analyzer.json index 5b86308adf..7306be0f89 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/build/lifecycle-analyzer.json +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/build/lifecycle-analyzer.json @@ -1,7 +1,7 @@ { "User" : "root", "Image" : "pack.local/ephemeral-builder", - "Cmd" : [ "/lifecycle/analyzer", "-daemon", "-layers", "/layers", "-cache-dir", "/cache", "docker.io/library/my-application:latest" ], + "Cmd" : [ "/lifecycle/analyzer", "-daemon", "-cache-dir", "/cache", "-layers", "/layers", "docker.io/library/my-application:latest" ], "Labels" : { "author" : "spring-boot" }, diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/build/run-image-with-bad-stack.json b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/build/run-image-with-bad-stack.json index 66f0ed3336..29d97d511b 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/build/run-image-with-bad-stack.json +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/build/run-image-with-bad-stack.json @@ -1,10 +1,10 @@ { "Id": "sha256:9b450bffdb05bcf660d464d0bfdf344ee6ca38e9b8de4f408c8080b0c9319349", "RepoTags": [ - "cloudfoundry/cnb:latest" + "packeto-buildpacks/cnb:latest" ], "RepoDigests": [ - "cloudfoundry/run@sha256:715806bb793b66e3fc1a5a8f5584c6a1b6db05425e573887673bddcf426f1b90" + "packeto-buildpacks/run@sha256:715806bb793b66e3fc1a5a8f5584c6a1b6db05425e573887673bddcf426f1b90" ], "Parent": "", "Comment": "", diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/docker/pull-stream.json b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/docker/pull-stream.json index ffcb6a8e61..f4efce803f 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/docker/pull-stream.json +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/docker/pull-stream.json @@ -1,6 +1,6 @@ { - "status": "Pulling from cloudfoundry/cnb", - "id": "bionic" + "status": "Pulling from packeto-buildpacks/cnb", + "id": "base" } {"status":"Pulling fs layer","progressDetail":{},"id":"5667fdb72017"} {"status":"Pulling fs layer","progressDetail":{},"id":"d83811f270d5"} @@ -595,4 +595,4 @@ {"status":"Extracting","progressDetail":{"current":32,"total":32},"progress":"[==================================================\u003e] 32B/32B","id":"4f4fb700ef54"} {"status":"Pull complete","progressDetail":{},"id":"4f4fb700ef54"} {"status":"Digest: sha256:4acb6bfd6c4f0cabaf7f3690e444afe51f1c7de54d51da7e63fac709c56f1c30"} -{"status":"Status: Downloaded newer image for cloudfoundry/cnb:bionic"} +{"status":"Status: Downloaded newer image for packeto-buildpacks/cnb:base"} diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/docker/pull-update-minimal.json b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/docker/pull-update-minimal.json index 9d2939da65..8e7965c58f 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/docker/pull-update-minimal.json +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/docker/pull-update-minimal.json @@ -1,3 +1,3 @@ { - "status": "Status: Downloaded newer image for cloudfoundry/cnb:bionic" + "status": "Status: Downloaded newer image for packeto-buildpacks/cnb:base" } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/docker/type/image.json b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/docker/type/image.json index 4d9667f335..e33afe49c7 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/docker/type/image.json +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/docker/type/image.json @@ -1,10 +1,10 @@ { "Id": "sha256:9b450bffdb05bcf660d464d0bfdf344ee6ca38e9b8de4f408c8080b0c9319349", "RepoTags": [ - "cloudfoundry/cnb:latest" + "packeto-buildpacks/cnb:latest" ], "RepoDigests": [ - "cloudfoundry/cnb@sha256:915802bb193b66e3fc1a5a8f5584c6a1b6db05425e573887673bddcf426f1b90" + "packeto-buildpacks/cnb@sha256:915802bb193b66e3fc1a5a8f5584c6a1b6db05425e573887673bddcf426f1b90" ], "Parent": "", "Comment": "", diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/json/stream.json b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/json/stream.json index ffcb6a8e61..f4efce803f 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/json/stream.json +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/resources/org/springframework/boot/buildpack/platform/json/stream.json @@ -1,6 +1,6 @@ { - "status": "Pulling from cloudfoundry/cnb", - "id": "bionic" + "status": "Pulling from packeto-buildpacks/cnb", + "id": "base" } {"status":"Pulling fs layer","progressDetail":{},"id":"5667fdb72017"} {"status":"Pulling fs layer","progressDetail":{},"id":"d83811f270d5"} @@ -595,4 +595,4 @@ {"status":"Extracting","progressDetail":{"current":32,"total":32},"progress":"[==================================================\u003e] 32B/32B","id":"4f4fb700ef54"} {"status":"Pull complete","progressDetail":{},"id":"4f4fb700ef54"} {"status":"Digest: sha256:4acb6bfd6c4f0cabaf7f3690e444afe51f1c7de54d51da7e63fac709c56f1c30"} -{"status":"Status: Downloaded newer image for cloudfoundry/cnb:bionic"} +{"status":"Status: Downloaded newer image for packeto-buildpacks/cnb:base"} diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/asciidoc/packaging-oci-image.adoc b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/asciidoc/packaging-oci-image.adoc index 8e07cd40f2..4e18543a1f 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/asciidoc/packaging-oci-image.adoc +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/docs/asciidoc/packaging-oci-image.adoc @@ -48,7 +48,7 @@ The following table summarizes the available properties and their default values | `builder` | `--builder` | Name of the Builder image to use. -| `cloudfoundry/cnb:bionic-platform-api-0.2` +| `gcr.io/paketo-buildpacks/builder:base-platform-api-0.3` | `imageName` | `--imageName` diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.java index 4bcc67a249..3e434a1da4 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.java @@ -61,7 +61,7 @@ class BootBuildImageIntegrationTests { String projectName = this.gradleBuild.getProjectDir().getName(); assertThat(result.task(":bootBuildImage").getOutcome()).isEqualTo(TaskOutcome.SUCCESS); assertThat(result.getOutput()).contains("docker.io/library/" + projectName); - assertThat(result.getOutput()).contains("cloudfoundry/cnb:bionic-platform-api"); + assertThat(result.getOutput()).contains("paketo-buildpacks/builder"); ImageReference imageReference = ImageReference.of(ImageName.of(projectName)); try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); @@ -77,9 +77,9 @@ class BootBuildImageIntegrationTests { writeLongNameResource(); BuildResult result = this.gradleBuild.build("bootBuildImage"); assertThat(result.task(":bootBuildImage").getOutcome()).isEqualTo(TaskOutcome.SUCCESS); - assertThat(result.getOutput()).contains("example.com/test-image-name"); - assertThat(result.getOutput()).contains("cloudfoundry/cnb:bionic-platform-api"); - ImageReference imageReference = ImageReference.of(ImageName.of("example.com/test-image-name")); + assertThat(result.getOutput()).contains("example/test-image-name"); + assertThat(result.getOutput()).contains("paketo-buildpacks/builder"); + ImageReference imageReference = ImageReference.of(ImageName.of("example/test-image-name")); try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); } @@ -93,11 +93,10 @@ class BootBuildImageIntegrationTests { writeMainClass(); writeLongNameResource(); BuildResult result = this.gradleBuild.build("bootBuildImage"); - String projectName = this.gradleBuild.getProjectDir().getName(); assertThat(result.task(":bootBuildImage").getOutcome()).isEqualTo(TaskOutcome.SUCCESS); - assertThat(result.getOutput()).contains("docker.io/library/" + projectName); - assertThat(result.getOutput()).contains("cloudfoundry/cnb:bionic-platform-api-0.2"); - ImageReference imageReference = ImageReference.of(ImageName.of(projectName)); + assertThat(result.getOutput()).contains("example/test-image-v2"); + assertThat(result.getOutput()).contains("paketo-buildpacks/builder:base-platform-api-0.2"); + ImageReference imageReference = ImageReference.of(ImageName.of("example/test-image-v2")); try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); } @@ -110,12 +109,12 @@ class BootBuildImageIntegrationTests { void buildsImageWithCommandLineOptions() throws IOException { writeMainClass(); writeLongNameResource(); - BuildResult result = this.gradleBuild.build("bootBuildImage", "--imageName=example.com/test-image-name", - "--builder=cloudfoundry/cnb:bionic-platform-api-0.2"); + BuildResult result = this.gradleBuild.build("bootBuildImage", "--imageName=example/test-image-v2", + "--builder=gcr.io/paketo-buildpacks/builder:base-platform-api-0.2"); assertThat(result.task(":bootBuildImage").getOutcome()).isEqualTo(TaskOutcome.SUCCESS); - assertThat(result.getOutput()).contains("example.com/test-image-name"); - assertThat(result.getOutput()).contains("cloudfoundry/cnb:bionic-platform-api-0.2"); - ImageReference imageReference = ImageReference.of(ImageName.of("example.com/test-image-name")); + assertThat(result.getOutput()).contains("example/test-image-v2"); + assertThat(result.getOutput()).contains("paketo-buildpacks/builder:base-platform-api-0.2"); + ImageReference imageReference = ImageReference.of(ImageName.of("example/test-image-v2")); try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageTests.java b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageTests.java index f7d528ba42..fc11ed7b14 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/BootBuildImageTests.java @@ -174,7 +174,7 @@ class BootBuildImageTests { @Test void whenNoBuilderIsConfiguredThenRequestHasDefaultBuilder() { - assertThat(this.buildImage.createRequest().getBuilder().getName()).isEqualTo("cloudfoundry/cnb"); + assertThat(this.buildImage.createRequest().getBuilder().getName()).isEqualTo("paketo-buildpacks/builder"); } @Test diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCustomName.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCustomName.gradle index 245ed3f0af..58905f9d04 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCustomName.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCustomName.gradle @@ -7,5 +7,5 @@ sourceCompatibility = '1.8' targetCompatibility = '1.8' bootBuildImage { - imageName = "example.com/test-image-name" + imageName = "example/test-image-name" } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithV2Builder.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithV2Builder.gradle index 9e458a2cb6..3af45dd5b3 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithV2Builder.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithV2Builder.gradle @@ -7,5 +7,6 @@ sourceCompatibility = '1.8' targetCompatibility = '1.8' bootBuildImage { - builder = "cloudfoundry/cnb:bionic-platform-api-0.2" + imageName = "example/test-image-v2" + builder = "gcr.io/paketo-buildpacks/builder:base-platform-api-0.2" } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/docs/asciidoc/packaging-oci-image.adoc b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/docs/asciidoc/packaging-oci-image.adoc index 0551dca0ad..d52efde104 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/docs/asciidoc/packaging-oci-image.adoc +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/docs/asciidoc/packaging-oci-image.adoc @@ -73,7 +73,7 @@ The following table summarizes the available parameters and their default values | `builder` | Name of the Builder image to use. | `spring-boot.build-image.builder` -| `cloudfoundry/cnb:bionic-platform-api-0.2` +| `gcr.io/paketo-buildpacks/builder:base-platform-api-0.3` | `name` | {spring-boot-api}/buildpack/platform/docker/type/ImageReference.html#of-java.lang.String-[Image name] for the generated image. diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/BuildImageTests.java b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/BuildImageTests.java index f58bc97c11..377c3fc6b5 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/BuildImageTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/java/org/springframework/boot/maven/BuildImageTests.java @@ -52,7 +52,7 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { assertThat(jar).isFile(); File original = new File(project, "target/build-image-0.0.1.BUILD-SNAPSHOT.jar.original"); assertThat(original).doesNotExist(); - assertThat(buildLog(project)).contains("Building image").contains("cloudfoundry/cnb:bionic-platform-api") + assertThat(buildLog(project)).contains("Building image").contains("paketo-buildpacks/builder") .contains("docker.io/library/build-image:0.0.1.BUILD-SNAPSHOT") .contains("Successfully built image"); ImageReference imageReference = ImageReference.of(ImageName.of("build-image"), "0.0.1.BUILD-SNAPSHOT"); @@ -93,11 +93,13 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { void whenBuildImageIsInvokedWithCommandLineParameters(MavenBuild mavenBuild) { mavenBuild.project("build-image").goals("package") .systemProperty("spring-boot.build-image.imageName", "example.com/test/cmd-property-name:v1") - .systemProperty("spring-boot.build-image.builder", "cloudfoundry/cnb:bionic-platform-api-0.2") + .systemProperty("spring-boot.build-image.builder", + "gcr.io/paketo-buildpacks/builder:base-platform-api-0.2") .execute((project) -> { assertThat(buildLog(project)).contains("Building image") .contains("example.com/test/cmd-property-name:v1") - .contains("cloudfoundry/cnb:bionic-platform-api-0.2").contains("Successfully built image"); + .contains("paketo-buildpacks/builder:base-platform-api-0.2") + .contains("Successfully built image"); ImageReference imageReference = ImageReference.of("example.com/test/cmd-property-name:v1"); try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); @@ -112,7 +114,7 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { void whenBuildImageIsInvokedWithV2BuilderImage(MavenBuild mavenBuild) { mavenBuild.project("build-image-v2-builder").goals("package").execute((project) -> { assertThat(buildLog(project)).contains("Building image") - .contains("cloudfoundry/cnb:bionic-platform-api-0.2") + .contains("paketo-buildpacks/builder:base-platform-api-0.2") .contains("docker.io/library/build-image-v2-builder:0.0.1.BUILD-SNAPSHOT") .contains("Successfully built image"); ImageReference imageReference = ImageReference diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-v2-builder/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-v2-builder/pom.xml index 39d494d590..7ae145d180 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-v2-builder/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-v2-builder/pom.xml @@ -23,7 +23,7 @@ - cloudfoundry/cnb:bionic-platform-api-0.2 + gcr.io/paketo-buildpacks/builder:base-platform-api-0.2 diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/ImageTests.java b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/ImageTests.java index 4d8f0f7524..4330f56ed6 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/ImageTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/test/java/org/springframework/boot/maven/ImageTests.java @@ -57,7 +57,7 @@ class ImageTests { void getBuildRequestWhenNoCustomizationsUsesDefaults() { BuildRequest request = new Image().getBuildRequest(createArtifact(), mockApplicationContent()); assertThat(request.getName().toString()).isEqualTo("docker.io/library/my-app:0.0.1-SNAPSHOT"); - assertThat(request.getBuilder().toString()).contains("docker.io/cloudfoundry/cnb:bionic-platform-api"); + assertThat(request.getBuilder().toString()).contains("paketo-buildpacks/builder"); assertThat(request.getEnv()).isEmpty(); assertThat(request.isCleanCache()).isFalse(); assertThat(request.isVerboseLogging()).isFalse();