From b35d1ec6e89d8e492ad6603277d8d1e0c6011d47 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Wed, 7 Apr 2021 09:30:51 +0100 Subject: [PATCH 1/2] Revert "Use test harness for image building integration tests" This reverts commit da9d8d6055dd458419e4268a7924f7abd33ee919. See gh-25838 --- .../BootBuildImageIntegrationTests.java | 75 ++++++---- ...s-buildsImageWithCommandLineOptions.gradle | 7 - ...dsImageWithCustomBuilderAndRunImage.gradle | 4 +- ...tionTests-buildsImageWithCustomName.gradle | 1 - ...WithWarPackagingAndJarConfiguration.gradle | 4 - ...egrationTests-failsWithBuilderError.gradle | 3 +- .../BootBuildImageIntegrationTests.gradle | 4 - .../boot/maven/BuildImageTests.java | 129 +++++++++++++----- .../build-image-builder-error/pom.xml | 3 +- .../pom.xml | 5 - .../build-image-classifier-source/pom.xml | 5 - .../pom.xml | 5 - .../projects/build-image-classifier/pom.xml | 5 - .../projects/build-image-cmd-line/pom.xml | 29 ---- .../main/java/org/test/SampleApplication.java | 28 ---- .../build-image-custom-builder/pom.xml | 4 +- .../projects/build-image-custom-name/pom.xml | 1 - .../build-image-empty-env-entry/pom.xml | 1 - .../projects/build-image-final-name/pom.xml | 3 - .../build-image-with-repackage/pom.xml | 5 - .../src/intTest/projects/build-image/pom.xml | 5 - src/spring-boot-builder/README.adoc | 15 -- src/spring-boot-builder/builder/builder.toml | 18 --- .../buildpacks/test-info/bin/build | 30 ---- .../buildpacks/test-info/bin/detect | 28 ---- .../buildpacks/test-info/buildpack.toml | 13 -- 26 files changed, 145 insertions(+), 285 deletions(-) delete mode 100644 spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCommandLineOptions.gradle delete mode 100644 spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-cmd-line/pom.xml delete mode 100644 spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-cmd-line/src/main/java/org/test/SampleApplication.java delete mode 100644 src/spring-boot-builder/README.adoc delete mode 100644 src/spring-boot-builder/builder/builder.toml delete mode 100755 src/spring-boot-builder/buildpacks/test-info/bin/build delete mode 100755 src/spring-boot-builder/buildpacks/test-info/bin/detect delete mode 100644 src/spring-boot-builder/buildpacks/test-info/buildpack.toml 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 1bf4b4fca4..f958154fd3 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 @@ -1,5 +1,5 @@ /* - * Copyright 2012-2021 the original author or authors. + * Copyright 2012-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,6 +29,8 @@ import org.gradle.testkit.runner.BuildResult; import org.gradle.testkit.runner.TaskOutcome; import org.junit.jupiter.api.TestTemplate; import org.junit.jupiter.api.extension.ExtendWith; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.wait.strategy.Wait; import org.springframework.boot.buildpack.platform.docker.DockerApi; import org.springframework.boot.buildpack.platform.docker.type.ImageName; @@ -59,10 +61,14 @@ 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("---> Test Info buildpack building"); - assertThat(result.getOutput()).contains("env: BP_JVM_VERSION=8.*"); - assertThat(result.getOutput()).contains("---> Test Info buildpack done"); - removeImage(projectName); + 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(); + } + finally { + new DockerApi().image().remove(imageReference, false); + } } @TestTemplate @@ -72,10 +78,14 @@ class BootBuildImageIntegrationTests { BuildResult result = this.gradleBuild.build("bootBuildImage"); assertThat(result.task(":bootBuildImage").getOutcome()).isEqualTo(TaskOutcome.SUCCESS); assertThat(result.getOutput()).contains("example/test-image-name"); - assertThat(result.getOutput()).contains("---> Test Info buildpack building"); - assertThat(result.getOutput()).contains("env: BP_JVM_VERSION=8.*"); - assertThat(result.getOutput()).contains("---> Test Info buildpack done"); - removeImage("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(); + } + finally { + new DockerApi().image().remove(imageReference, false); + } } @TestTemplate @@ -85,11 +95,15 @@ class BootBuildImageIntegrationTests { BuildResult result = this.gradleBuild.build("bootBuildImage"); assertThat(result.task(":bootBuildImage").getOutcome()).isEqualTo(TaskOutcome.SUCCESS); assertThat(result.getOutput()).contains("example/test-image-custom"); - assertThat(result.getOutput()).contains("springci/spring-boot-cnb-builder:0.0.1"); - assertThat(result.getOutput()).contains("paketobuildpacks/run:tiny-cnb"); - assertThat(result.getOutput()).contains("---> Test Info buildpack building"); - assertThat(result.getOutput()).contains("---> Test Info buildpack done"); - removeImage("example/test-image-custom"); + assertThat(result.getOutput()).contains("paketobuildpacks/builder:full"); + assertThat(result.getOutput()).contains("paketobuildpacks/run:full-cnb"); + ImageReference imageReference = ImageReference.of(ImageName.of("example/test-image-custom")); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + new DockerApi().image().remove(imageReference, false); + } } @TestTemplate @@ -97,14 +111,18 @@ class BootBuildImageIntegrationTests { writeMainClass(); writeLongNameResource(); BuildResult result = this.gradleBuild.build("bootBuildImage", "--imageName=example/test-image-cmd", - "--builder=springci/spring-boot-cnb-builder:0.0.1", "--runImage=paketobuildpacks/run:tiny-cnb"); + "--builder=paketobuildpacks/builder:full", "--runImage=paketobuildpacks/run:full-cnb"); assertThat(result.task(":bootBuildImage").getOutcome()).isEqualTo(TaskOutcome.SUCCESS); assertThat(result.getOutput()).contains("example/test-image-cmd"); - assertThat(result.getOutput()).contains("springci/spring-boot-cnb-builder:0.0.1"); - assertThat(result.getOutput()).contains("paketobuildpacks/run:tiny-cnb"); - assertThat(result.getOutput()).contains("---> Test Info buildpack building"); - assertThat(result.getOutput()).contains("---> Test Info buildpack done"); - removeImage("example/test-image-cmd"); + assertThat(result.getOutput()).contains("paketobuildpacks/builder:full"); + assertThat(result.getOutput()).contains("paketobuildpacks/run:full-cnb"); + ImageReference imageReference = ImageReference.of(ImageName.of("example/test-image-cmd")); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + new DockerApi().image().remove(imageReference, false); + } } @TestTemplate @@ -122,7 +140,6 @@ class BootBuildImageIntegrationTests { writeLongNameResource(); BuildResult result = this.gradleBuild.buildAndFail("bootBuildImage"); assertThat(result.task(":bootBuildImage").getOutcome()).isEqualTo(TaskOutcome.FAILED); - assertThat(result.getOutput()).contains("Forced builder failure"); assertThat(result.getOutput()).containsPattern("Builder lifecycle '.*' failed with status code"); } @@ -153,12 +170,17 @@ 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("---> Test Info buildpack building"); - assertThat(result.getOutput()).contains("---> Test Info buildpack done"); + assertThat(result.getOutput()).contains("paketo-buildpacks/builder"); File buildLibs = new File(this.gradleBuild.getProjectDir(), "build/libs"); assertThat(buildLibs.listFiles()) .containsExactly(new File(buildLibs, this.gradleBuild.getProjectDir().getName() + ".war")); - removeImage(projectName); + ImageReference imageReference = ImageReference.of(ImageName.of(projectName)); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + new DockerApi().image().remove(imageReference, false); + } } private void writeMainClass() { @@ -200,9 +222,4 @@ class BootBuildImageIntegrationTests { } } - private void removeImage(String name) throws IOException { - ImageReference imageReference = ImageReference.of(ImageName.of(name)); - new DockerApi().image().remove(imageReference, false); - } - } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCommandLineOptions.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCommandLineOptions.gradle deleted file mode 100644 index 8971742147..0000000000 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCommandLineOptions.gradle +++ /dev/null @@ -1,7 +0,0 @@ -plugins { - id 'java' - id 'org.springframework.boot' version '{version}' -} - -sourceCompatibility = '1.8' -targetCompatibility = '1.8' diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCustomBuilderAndRunImage.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCustomBuilderAndRunImage.gradle index 621742d3ba..9878fe16db 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCustomBuilderAndRunImage.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCustomBuilderAndRunImage.gradle @@ -8,6 +8,6 @@ targetCompatibility = '1.8' bootBuildImage { imageName = "example/test-image-custom" - builder = "springci/spring-boot-cnb-builder:0.0.1" - runImage = "paketobuildpacks/run:tiny-cnb" + builder = "paketobuildpacks/builder:full" + runImage = "paketobuildpacks/run:full-cnb" } 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 c78bd4f43c..e306457624 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 @@ -8,5 +8,4 @@ targetCompatibility = '1.8' bootBuildImage { imageName = "example/test-image-name" - builder = "springci/spring-boot-cnb-builder:0.0.1" } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithWarPackagingAndJarConfiguration.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithWarPackagingAndJarConfiguration.gradle index 5165f759d0..5aa8c27efe 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithWarPackagingAndJarConfiguration.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithWarPackagingAndJarConfiguration.gradle @@ -9,7 +9,3 @@ bootBuildImage { sourceCompatibility = '1.8' targetCompatibility = '1.8' - -bootBuildImage { - builder = "springci/spring-boot-cnb-builder:0.0.1" -} \ No newline at end of file diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWithBuilderError.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWithBuilderError.gradle index 2873acc634..fb706c51ca 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWithBuilderError.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWithBuilderError.gradle @@ -7,6 +7,5 @@ sourceCompatibility = '1.8' targetCompatibility = '1.8' bootBuildImage { - builder = "springci/spring-boot-cnb-builder:0.0.1" - environment = ["FORCE_FAILURE": "true"] + environment = ["BP_JVM_VERSION": "13.9.9"] } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.gradle index f34b7e643a..5e0df9a58c 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.gradle @@ -9,7 +9,3 @@ if (project.hasProperty('applyWarPlugin')) { sourceCompatibility = '1.8' targetCompatibility = '1.8' - -bootBuildImage { - builder = "springci/spring-boot-cnb-builder:0.0.1" -} 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 1129d2835c..5f6abcd0aa 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 @@ -25,6 +25,8 @@ import java.util.Random; import org.junit.jupiter.api.TestTemplate; import org.junit.jupiter.api.extension.ExtendWith; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.wait.strategy.Wait; import org.springframework.boot.buildpack.platform.docker.DockerApi; import org.springframework.boot.buildpack.platform.docker.type.ImageName; @@ -50,11 +52,16 @@ 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") + assertThat(buildLog(project)).contains("Building image").contains("paketo-buildpacks/builder") .contains("docker.io/library/build-image:0.0.1.BUILD-SNAPSHOT") - .contains("---> Test Info buildpack building").contains("env: BP_JVM_VERSION=8.*") - .contains("---> Test Info buildpack done").contains("Successfully built image"); - removeImage("build-image", "0.0.1.BUILD-SNAPSHOT"); + .contains("Successfully built image"); + ImageReference imageReference = ImageReference.of(ImageName.of("build-image"), "0.0.1.BUILD-SNAPSHOT"); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + removeImage(imageReference); + } }); } @@ -68,9 +75,15 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { assertThat(classifier).doesNotExist(); assertThat(buildLog(project)).contains("Building image") .contains("docker.io/library/build-image-classifier:0.0.1.BUILD-SNAPSHOT") - .contains("---> Test Info buildpack building").contains("env: BP_JVM_VERSION=8.*") - .contains("---> Test Info buildpack done").contains("Successfully built image"); - removeImage("build-image-classifier", "0.0.1.BUILD-SNAPSHOT"); + .contains("Successfully built image"); + ImageReference imageReference = ImageReference.of(ImageName.of("build-image-classifier"), + "0.0.1.BUILD-SNAPSHOT"); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + removeImage(imageReference); + } }); } @@ -86,9 +99,15 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { assertThat(original).doesNotExist(); assertThat(buildLog(project)).contains("Building image") .contains("docker.io/library/build-image-classifier-source:0.0.1.BUILD-SNAPSHOT") - .contains("---> Test Info buildpack building").contains("---> Test Info buildpack done") .contains("Successfully built image"); - removeImage("build-image-classifier-source", "0.0.1.BUILD-SNAPSHOT"); + ImageReference imageReference = ImageReference.of(ImageName.of("build-image-classifier-source"), + "0.0.1.BUILD-SNAPSHOT"); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + removeImage(imageReference); + } }); } @@ -101,11 +120,17 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { File original = new File(project, "target/build-image-with-repackage-0.0.1.BUILD-SNAPSHOT.jar.original"); assertThat(original).isFile(); - assertThat(buildLog(project)).contains("Building image") + assertThat(buildLog(project)).contains("Building image").contains("paketo-buildpacks/builder") .contains("docker.io/library/build-image-with-repackage:0.0.1.BUILD-SNAPSHOT") - .contains("---> Test Info buildpack building").contains("---> Test Info buildpack done") .contains("Successfully built image"); - removeImage("build-image-with-repackage", "0.0.1.BUILD-SNAPSHOT"); + ImageReference imageReference = ImageReference.of(ImageName.of("build-image-with-repackage"), + "0.0.1.BUILD-SNAPSHOT"); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + removeImage(imageReference); + } }); } @@ -121,9 +146,15 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { assertThat(original).isFile(); assertThat(buildLog(project)).contains("Building image") .contains("docker.io/library/build-image-classifier-with-repackage:0.0.1.BUILD-SNAPSHOT") - .contains("---> Test Info buildpack building").contains("---> Test Info buildpack done") .contains("Successfully built image"); - removeImage("build-image-classifier-with-repackage", "0.0.1.BUILD-SNAPSHOT"); + ImageReference imageReference = ImageReference + .of(ImageName.of("build-image-classifier-with-repackage"), "0.0.1.BUILD-SNAPSHOT"); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + removeImage(imageReference); + } }); } @@ -139,9 +170,15 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { assertThat(original).isFile(); assertThat(buildLog(project)).contains("Building image").contains( "docker.io/library/build-image-classifier-source-with-repackage:0.0.1.BUILD-SNAPSHOT") - .contains("---> Test Info buildpack building").contains("---> Test Info buildpack done") .contains("Successfully built image"); - removeImage("build-image-classifier-source-with-repackage", "0.0.1.BUILD-SNAPSHOT"); + ImageReference imageReference = ImageReference + .of(ImageName.of("build-image-classifier-source-with-repackage"), "0.0.1.BUILD-SNAPSHOT"); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + removeImage(imageReference); + } }); } @@ -157,37 +194,53 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { assertThat(original).doesNotExist(); assertThat(buildLog(project)).contains("Building image") .contains("example.com/test/build-image:0.0.1.BUILD-SNAPSHOT") - .contains("---> Test Info buildpack building").contains("---> Test Info buildpack done") .contains("Successfully built image"); - removeImage("example.com/test/build-image", "0.0.1.BUILD-SNAPSHOT"); + ImageReference imageReference = ImageReference + .of("example.com/test/build-image:0.0.1.BUILD-SNAPSHOT"); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + removeImage(imageReference); + } }); } @TestTemplate void whenBuildImageIsInvokedWithCommandLineParameters(MavenBuild mavenBuild) { - mavenBuild.project("build-image-cmd-line").goals("package") + 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", "springci/spring-boot-cnb-builder:0.0.1") - .systemProperty("spring-boot.build-image.runImage", "paketobuildpacks/run:tiny-cnb") + .systemProperty("spring-boot.build-image.builder", "paketobuildpacks/builder:full") + .systemProperty("spring-boot.build-image.runImage", "paketobuildpacks/run:full-cnb") .execute((project) -> { assertThat(buildLog(project)).contains("Building image") - .contains("example.com/test/cmd-property-name:v1") - .contains("springci/spring-boot-cnb-builder:0.0.1") - .contains("paketobuildpacks/run:tiny-cnb").contains("---> Test Info buildpack building") - .contains("---> Test Info buildpack done").contains("Successfully built image"); - removeImage("example.com/test/cmd-property-name", "v1"); + .contains("example.com/test/cmd-property-name:v1").contains("paketobuildpacks/builder:full") + .contains("paketobuildpacks/run:full-cnb").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(); + } + finally { + removeImage(imageReference); + } }); } @TestTemplate void whenBuildImageIsInvokedWithCustomBuilderImageAndRunImage(MavenBuild mavenBuild) { mavenBuild.project("build-image-custom-builder").goals("package").execute((project) -> { - assertThat(buildLog(project)).contains("Building image") + assertThat(buildLog(project)).contains("Building image").contains("paketobuildpacks/builder:full") + .contains("paketobuildpacks/run:full-cnb") .contains("docker.io/library/build-image-v2-builder:0.0.1.BUILD-SNAPSHOT") - .contains("springci/spring-boot-cnb-builder:0.0.1").contains("paketobuildpacks/run:tiny-cnb") - .contains("---> Test Info buildpack building").contains("---> Test Info buildpack done") .contains("Successfully built image"); - removeImage("docker.io/library/build-image-v2-builder", "0.0.1.BUILD-SNAPSHOT"); + ImageReference imageReference = ImageReference + .of("docker.io/library/build-image-v2-builder:0.0.1.BUILD-SNAPSHOT"); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + removeImage(imageReference); + } }); } @@ -195,11 +248,17 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { void whenBuildImageIsInvokedWithEmptyEnvEntry(MavenBuild mavenBuild) { mavenBuild.project("build-image-empty-env-entry").goals("package").prepare(this::writeLongNameResource) .execute((project) -> { - assertThat(buildLog(project)).contains("Building image") + assertThat(buildLog(project)).contains("Building image").contains("paketo-buildpacks/builder") .contains("docker.io/library/build-image-empty-env-entry:0.0.1.BUILD-SNAPSHOT") - .contains("---> Test Info buildpack building").contains("---> Test Info buildpack done") .contains("Successfully built image"); - removeImage("build-image-empty-env-entry", "0.0.1.BUILD-SNAPSHOT"); + ImageReference imageReference = ImageReference.of(ImageName.of("build-image-empty-env-entry"), + "0.0.1.BUILD-SNAPSHOT"); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + removeImage(imageReference); + } }); } @@ -207,7 +266,6 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { void failsWhenBuilderFails(MavenBuild mavenBuild) { mavenBuild.project("build-image-builder-error").goals("package") .executeAndFail((project) -> assertThat(buildLog(project)).contains("Building image") - .contains("---> Test Info buildpack building").contains("Forced builder failure") .containsPattern("Builder lifecycle '.*' failed with status code")); } @@ -237,8 +295,7 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { } } - private void removeImage(String name, String version) { - ImageReference imageReference = ImageReference.of(ImageName.of(name), version); + private void removeImage(ImageReference imageReference) { try { new DockerApi().image().remove(imageReference, false); } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-builder-error/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-builder-error/pom.xml index 4866c1cd2e..5b7491e88e 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-builder-error/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-builder-error/pom.xml @@ -23,9 +23,8 @@ - springci/spring-boot-cnb-builder:0.0.1 - true + 13.9.9 diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-source-with-repackage/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-source-with-repackage/pom.xml index 15fd86bd7c..7734c543d6 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-source-with-repackage/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-source-with-repackage/pom.xml @@ -43,11 +43,6 @@ build-image - - - springci/spring-boot-cnb-builder:0.0.1 - - diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-source/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-source/pom.xml index e5d62a6c48..30b605a5bc 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-source/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-source/pom.xml @@ -37,11 +37,6 @@ build-image - - - springci/spring-boot-cnb-builder:0.0.1 - - diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-with-repackage/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-with-repackage/pom.xml index 997a7b24c3..d2f34ba4c6 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-with-repackage/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-with-repackage/pom.xml @@ -27,11 +27,6 @@ build-image - - - springci/spring-boot-cnb-builder:0.0.1 - - diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier/pom.xml index 118ce18b48..ba64b1df5f 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier/pom.xml @@ -21,11 +21,6 @@ build-image - - - springci/spring-boot-cnb-builder:0.0.1 - - diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-cmd-line/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-cmd-line/pom.xml deleted file mode 100644 index 0451a8426e..0000000000 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-cmd-line/pom.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - 4.0.0 - org.springframework.boot.maven.it - build-image - 0.0.1.BUILD-SNAPSHOT - - UTF-8 - @java.version@ - @java.version@ - - - - - @project.groupId@ - @project.artifactId@ - @project.version@ - - - - build-image - - - - - - - diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-cmd-line/src/main/java/org/test/SampleApplication.java b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-cmd-line/src/main/java/org/test/SampleApplication.java deleted file mode 100644 index 5053809ef1..0000000000 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-cmd-line/src/main/java/org/test/SampleApplication.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2012-2021 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.test; - -public class SampleApplication { - - public static void main(String[] args) throws Exception { - System.out.println("Launched"); - synchronized(args) { - args.wait(); // Prevent exit" - } - } - -} diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-custom-builder/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-custom-builder/pom.xml index db0c55aa6a..457cb7c933 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-custom-builder/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-custom-builder/pom.xml @@ -23,8 +23,8 @@ - springci/spring-boot-cnb-builder:0.0.1 - paketobuildpacks/run:tiny-cnb + paketobuildpacks/builder:full + paketobuildpacks/run:full-cnb diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-custom-name/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-custom-name/pom.xml index 0ad3c6f567..57ec39dd84 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-custom-name/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-custom-name/pom.xml @@ -23,7 +23,6 @@ - springci/spring-boot-cnb-builder:0.0.1 example.com/test/build-image:${project.version} diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-empty-env-entry/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-empty-env-entry/pom.xml index e0b7f897f6..e453fd95d6 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-empty-env-entry/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-empty-env-entry/pom.xml @@ -23,7 +23,6 @@ - springci/spring-boot-cnb-builder:0.0.1 diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-final-name/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-final-name/pom.xml index 11b81efa0a..599371978a 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-final-name/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-final-name/pom.xml @@ -24,9 +24,6 @@ final-name - - springci/spring-boot-cnb-builder:0.0.1 - diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-with-repackage/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-with-repackage/pom.xml index d9cd19b233..c9a9bd0322 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-with-repackage/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-with-repackage/pom.xml @@ -27,11 +27,6 @@ build-image - - - springci/spring-boot-cnb-builder:0.0.1 - - diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image/pom.xml index ab9c918a02..0451a8426e 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image/pom.xml @@ -21,11 +21,6 @@ build-image - - - springci/spring-boot-cnb-builder:0.0.1 - - diff --git a/src/spring-boot-builder/README.adoc b/src/spring-boot-builder/README.adoc deleted file mode 100644 index dfaf0efb07..0000000000 --- a/src/spring-boot-builder/README.adoc +++ /dev/null @@ -1,15 +0,0 @@ -= Spring Boot Test Builder - -This directory contains a Cloud Native Buildpacks https://buildpacks.io/docs/concepts/components/builder/[builder] and https://buildpacks.io/docs/concepts/components/buildpack/[buildpack] that is used by integration tests to verify the behavior of the Spring Boot build plugins. - -== Creating the builder - -* Install the https://buildpacks.io/docs/install-pack/[pack CLI] -* Authenticate to Docker Hub via `docker login` using the `springci` repository credentials -* Use `pack` to create the builder image and publish it to Docker Hub: - -[source,bash] ----- -$ cd builder -$ pack builder create springci/spring-boot-cnb-builder:0.0.1 --config builder.toml --publish ----- diff --git a/src/spring-boot-builder/builder/builder.toml b/src/spring-boot-builder/builder/builder.toml deleted file mode 100644 index 5ee00bb862..0000000000 --- a/src/spring-boot-builder/builder/builder.toml +++ /dev/null @@ -1,18 +0,0 @@ -# Buildpacks to include in builder -[[buildpacks]] -id = "spring-boot/test-info" -version = "0.0.1" -uri = "../buildpacks/test-info" - -# Order used for detection -[[order]] -[[order.group]] -id = "spring-boot/test-info" -version = "0.0.1" - -# Stack that will be used by the builder -[stack] -id = "io.paketo.stacks.tiny" -build-image = "index.docker.io/paketobuildpacks/build:1.2.2-tiny-cnb" -run-image = "index.docker.io/paketobuildpacks/run:tiny-cnb" -run-image-mirrors = ["gcr.io/paketo-buildpacks/run:tiny-cnb"] diff --git a/src/spring-boot-builder/buildpacks/test-info/bin/build b/src/spring-boot-builder/buildpacks/test-info/bin/build deleted file mode 100755 index 7698b0f6ba..0000000000 --- a/src/spring-boot-builder/buildpacks/test-info/bin/build +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env bash -set -eo pipefail - -echo "---> Test Info buildpack building" - -# INPUT ARGUMENTS -platform_dir=$2 -env_dir=${platform_dir}/env -bindings_dir=${platform_dir}/bindings - -if [[ -f ${env_dir}/FORCE_FAILURE ]]; then - echo "Forced builder failure" - exit 1 -fi - -if compgen -G "${env_dir}/*" > /dev/null; then - for var in ${env_dir}/*; do - echo "env: $(basename ${var})=$(<${var})" - done -fi - -if compgen -G "${bindings_dir}/*" > /dev/null; then - for binding in ${bindings_dir}/*; do - for f in ${binding}/*; do - echo "binding: $(basename ${binding})/$(basename ${f})=$(<${f})" - done - done -fi - -echo "---> Test Info buildpack done" diff --git a/src/spring-boot-builder/buildpacks/test-info/bin/detect b/src/spring-boot-builder/buildpacks/test-info/bin/detect deleted file mode 100755 index f7e1c76ebc..0000000000 --- a/src/spring-boot-builder/buildpacks/test-info/bin/detect +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env bash -set -eo pipefail - -# 1. CHECK IF APPLICABLE -if [[ ! -f META-INF/MANIFEST.MF ]]; then - exit 100 -fi - -# 2. GET ARGS -plan_path=$2 - -# 3. DECLARE DEPENDENCIES (OPTIONAL) -cat >> "${plan_path}" < Date: Wed, 7 Apr 2021 10:19:20 +0100 Subject: [PATCH 2/2] Revert "Merge branch '2.3.x' into 2.4.x" This reverts commit 586ce00e06aad0532b9bb4753baa343b0f9acff7, reversing changes made to 563b8a8cecb29911828701aa211a9b43663f72c6. See gh-25839 --- .../BootBuildImageIntegrationTests.java | 79 ++++++++---- ...s-buildsImageWithCommandLineOptions.gradle | 7 - ...dsImageWithCustomBuilderAndRunImage.gradle | 4 +- ...tionTests-buildsImageWithCustomName.gradle | 1 - ...WithWarPackagingAndJarConfiguration.gradle | 4 - ...egrationTests-failsWithBuilderError.gradle | 3 +- .../BootBuildImageIntegrationTests.gradle | 4 - .../boot/maven/BuildImageTests.java | 121 +++++++++++++----- .../build-image-builder-error/pom.xml | 3 +- .../pom.xml | 5 - .../build-image-classifier-source/pom.xml | 5 - .../pom.xml | 5 - .../projects/build-image-classifier/pom.xml | 5 - .../projects/build-image-cmd-line/pom.xml | 29 ----- .../main/java/org/test/SampleApplication.java | 28 ---- .../build-image-custom-builder/pom.xml | 4 +- .../projects/build-image-custom-name/pom.xml | 1 - .../build-image-empty-env-entry/pom.xml | 1 - .../projects/build-image-final-name/pom.xml | 3 - .../build-image-with-repackage/pom.xml | 5 - .../src/intTest/projects/build-image/pom.xml | 5 - src/spring-boot-builder/README.adoc | 15 --- src/spring-boot-builder/builder/builder.toml | 18 --- .../buildpacks/test-info/bin/build | 30 ----- .../buildpacks/test-info/bin/detect | 28 ---- .../buildpacks/test-info/buildpack.toml | 13 -- 26 files changed, 148 insertions(+), 278 deletions(-) delete mode 100644 spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCommandLineOptions.gradle delete mode 100644 spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-cmd-line/pom.xml delete mode 100644 spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-cmd-line/src/main/java/org/test/SampleApplication.java delete mode 100644 src/spring-boot-builder/README.adoc delete mode 100644 src/spring-boot-builder/builder/builder.toml delete mode 100755 src/spring-boot-builder/buildpacks/test-info/bin/build delete mode 100755 src/spring-boot-builder/buildpacks/test-info/bin/detect delete mode 100644 src/spring-boot-builder/buildpacks/test-info/buildpack.toml 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 bbc2fd16a4..3dced2f6ce 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 @@ -1,5 +1,5 @@ /* - * Copyright 2012-2021 the original author or authors. + * Copyright 2012-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -28,6 +28,8 @@ import java.util.Random; import org.gradle.testkit.runner.BuildResult; import org.gradle.testkit.runner.TaskOutcome; import org.junit.jupiter.api.TestTemplate; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.wait.strategy.Wait; import org.springframework.boot.buildpack.platform.docker.DockerApi; import org.springframework.boot.buildpack.platform.docker.type.ImageName; @@ -58,10 +60,13 @@ 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("---> Test Info buildpack building"); - assertThat(result.getOutput()).contains("env: BP_JVM_VERSION=8.*"); - assertThat(result.getOutput()).contains("---> Test Info buildpack done"); - removeImage(projectName); + ImageReference imageReference = ImageReference.of(ImageName.of(projectName)); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + new DockerApi().image().remove(imageReference, false); + } } @TestTemplate @@ -71,10 +76,13 @@ class BootBuildImageIntegrationTests { BuildResult result = this.gradleBuild.build("bootBuildImage", "--pullPolicy=IF_NOT_PRESENT"); assertThat(result.task(":bootBuildImage").getOutcome()).isEqualTo(TaskOutcome.SUCCESS); assertThat(result.getOutput()).contains("example/test-image-name"); - assertThat(result.getOutput()).contains("---> Test Info buildpack building"); - assertThat(result.getOutput()).contains("env: BP_JVM_VERSION=8.*"); - assertThat(result.getOutput()).contains("---> Test Info buildpack done"); - removeImage("example/test-image-name"); + 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(); + } + finally { + new DockerApi().image().remove(imageReference, false); + } } @TestTemplate @@ -84,9 +92,13 @@ class BootBuildImageIntegrationTests { BuildResult result = this.gradleBuild.build("bootBuildImage", "--pullPolicy=IF_NOT_PRESENT"); assertThat(result.task(":bootBuildImage").getOutcome()).isEqualTo(TaskOutcome.SUCCESS); assertThat(result.getOutput()).contains("example/test-image-custom"); - assertThat(result.getOutput()).contains("---> Test Info buildpack building"); - assertThat(result.getOutput()).contains("---> Test Info buildpack done"); - removeImage("example/test-image-custom"); + ImageReference imageReference = ImageReference.of(ImageName.of("example/test-image-custom")); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + new DockerApi().image().remove(imageReference, false); + } } @TestTemplate @@ -94,13 +106,17 @@ class BootBuildImageIntegrationTests { writeMainClass(); writeLongNameResource(); BuildResult result = this.gradleBuild.build("bootBuildImage", "--pullPolicy=IF_NOT_PRESENT", - "--imageName=example/test-image-cmd", "--builder=springci/spring-boot-cnb-builder:0.0.1", - "--runImage=paketobuildpacks/run:tiny-cnb"); + "--imageName=example/test-image-cmd", "--builder=paketobuildpacks/builder:full", + "--runImage=paketobuildpacks/run:full-cnb"); assertThat(result.task(":bootBuildImage").getOutcome()).isEqualTo(TaskOutcome.SUCCESS); assertThat(result.getOutput()).contains("example/test-image-cmd"); - assertThat(result.getOutput()).contains("---> Test Info buildpack building"); - assertThat(result.getOutput()).contains("---> Test Info buildpack done"); - removeImage("example/test-image-cmd"); + ImageReference imageReference = ImageReference.of(ImageName.of("example/test-image-cmd")); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + new DockerApi().image().remove(imageReference, false); + } } @TestTemplate @@ -108,13 +124,24 @@ class BootBuildImageIntegrationTests { writeMainClass(); writeLongNameResource(); String projectName = this.gradleBuild.getProjectDir().getName(); + ImageReference imageReference = ImageReference.of(ImageName.of(projectName)); + BuildResult result = this.gradleBuild.build("bootBuildImage", "--pullPolicy=ALWAYS"); assertThat(result.task(":bootBuildImage").getOutcome()).isEqualTo(TaskOutcome.SUCCESS); assertThat(result.getOutput()).contains("Pulled builder image").contains("Pulled run image"); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + result = this.gradleBuild.build("bootBuildImage", "--pullPolicy=IF_NOT_PRESENT"); assertThat(result.task(":bootBuildImage").getOutcome()).isEqualTo(TaskOutcome.SUCCESS); assertThat(result.getOutput()).doesNotContain("Pulled builder image").doesNotContain("Pulled run image"); - removeImage(projectName); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + new DockerApi().image().remove(imageReference, false); + } } @TestTemplate @@ -132,7 +159,6 @@ class BootBuildImageIntegrationTests { writeLongNameResource(); BuildResult result = this.gradleBuild.buildAndFail("bootBuildImage", "--pullPolicy=IF_NOT_PRESENT"); assertThat(result.task(":bootBuildImage").getOutcome()).isEqualTo(TaskOutcome.FAILED); - assertThat(result.getOutput()).contains("Forced builder failure"); assertThat(result.getOutput()).containsPattern("Builder lifecycle '.*' failed with status code"); } @@ -172,12 +198,16 @@ 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("---> Test Info buildpack building"); - assertThat(result.getOutput()).contains("---> Test Info buildpack done"); File buildLibs = new File(this.gradleBuild.getProjectDir(), "build/libs"); assertThat(buildLibs.listFiles()) .containsExactly(new File(buildLibs, this.gradleBuild.getProjectDir().getName() + ".war")); - removeImage(projectName); + ImageReference imageReference = ImageReference.of(ImageName.of(projectName)); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + new DockerApi().image().remove(imageReference, false); + } } private void writeMainClass() { @@ -219,9 +249,4 @@ class BootBuildImageIntegrationTests { } } - private void removeImage(String name) throws IOException { - ImageReference imageReference = ImageReference.of(ImageName.of(name)); - new DockerApi().image().remove(imageReference, false); - } - } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCommandLineOptions.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCommandLineOptions.gradle deleted file mode 100644 index 8971742147..0000000000 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCommandLineOptions.gradle +++ /dev/null @@ -1,7 +0,0 @@ -plugins { - id 'java' - id 'org.springframework.boot' version '{version}' -} - -sourceCompatibility = '1.8' -targetCompatibility = '1.8' diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCustomBuilderAndRunImage.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCustomBuilderAndRunImage.gradle index 621742d3ba..9878fe16db 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCustomBuilderAndRunImage.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithCustomBuilderAndRunImage.gradle @@ -8,6 +8,6 @@ targetCompatibility = '1.8' bootBuildImage { imageName = "example/test-image-custom" - builder = "springci/spring-boot-cnb-builder:0.0.1" - runImage = "paketobuildpacks/run:tiny-cnb" + builder = "paketobuildpacks/builder:full" + runImage = "paketobuildpacks/run:full-cnb" } 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 c78bd4f43c..e306457624 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 @@ -8,5 +8,4 @@ targetCompatibility = '1.8' bootBuildImage { imageName = "example/test-image-name" - builder = "springci/spring-boot-cnb-builder:0.0.1" } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithWarPackagingAndJarConfiguration.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithWarPackagingAndJarConfiguration.gradle index 5165f759d0..5aa8c27efe 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithWarPackagingAndJarConfiguration.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-buildsImageWithWarPackagingAndJarConfiguration.gradle @@ -9,7 +9,3 @@ bootBuildImage { sourceCompatibility = '1.8' targetCompatibility = '1.8' - -bootBuildImage { - builder = "springci/spring-boot-cnb-builder:0.0.1" -} \ No newline at end of file diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWithBuilderError.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWithBuilderError.gradle index 2873acc634..fb706c51ca 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWithBuilderError.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests-failsWithBuilderError.gradle @@ -7,6 +7,5 @@ sourceCompatibility = '1.8' targetCompatibility = '1.8' bootBuildImage { - builder = "springci/spring-boot-cnb-builder:0.0.1" - environment = ["FORCE_FAILURE": "true"] + environment = ["BP_JVM_VERSION": "13.9.9"] } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.gradle index f34b7e643a..5e0df9a58c 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/tasks/bundling/BootBuildImageIntegrationTests.gradle @@ -9,7 +9,3 @@ if (project.hasProperty('applyWarPlugin')) { sourceCompatibility = '1.8' targetCompatibility = '1.8' - -bootBuildImage { - builder = "springci/spring-boot-cnb-builder:0.0.1" -} 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 0336af0e8b..56323d1be1 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 @@ -25,6 +25,8 @@ import java.util.Random; import org.junit.jupiter.api.TestTemplate; import org.junit.jupiter.api.extension.ExtendWith; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.wait.strategy.Wait; import org.springframework.boot.buildpack.platform.docker.DockerApi; import org.springframework.boot.buildpack.platform.docker.type.ImageName; @@ -54,9 +56,15 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { assertThat(original).doesNotExist(); assertThat(buildLog(project)).contains("Building image") .contains("docker.io/library/build-image:0.0.1.BUILD-SNAPSHOT") - .contains("---> Test Info buildpack building").contains("env: BP_JVM_VERSION=8.*") - .contains("---> Test Info buildpack done").contains("Successfully built image"); - removeImage("build-image", "0.0.1.BUILD-SNAPSHOT"); + .contains("Successfully built image"); + ImageReference imageReference = ImageReference.of(ImageName.of("build-image"), + "0.0.1.BUILD-SNAPSHOT"); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + removeImage(imageReference); + } }); } @@ -71,9 +79,15 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { assertThat(classifier).doesNotExist(); assertThat(buildLog(project)).contains("Building image") .contains("docker.io/library/build-image-classifier:0.0.1.BUILD-SNAPSHOT") - .contains("---> Test Info buildpack building").contains("env: BP_JVM_VERSION=8.*") - .contains("---> Test Info buildpack done").contains("Successfully built image"); - removeImage("build-image-classifier", "0.0.1.BUILD-SNAPSHOT"); + .contains("Successfully built image"); + ImageReference imageReference = ImageReference.of(ImageName.of("build-image-classifier"), + "0.0.1.BUILD-SNAPSHOT"); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + removeImage(imageReference); + } }); } @@ -90,9 +104,15 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { assertThat(original).doesNotExist(); assertThat(buildLog(project)).contains("Building image") .contains("docker.io/library/build-image-classifier-source:0.0.1.BUILD-SNAPSHOT") - .contains("---> Test Info buildpack building").contains("---> Test Info buildpack done") .contains("Successfully built image"); - removeImage("build-image-classifier-source", "0.0.1.BUILD-SNAPSHOT"); + ImageReference imageReference = ImageReference.of(ImageName.of("build-image-classifier-source"), + "0.0.1.BUILD-SNAPSHOT"); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + removeImage(imageReference); + } }); } @@ -108,9 +128,15 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { assertThat(original).isFile(); assertThat(buildLog(project)).contains("Building image") .contains("docker.io/library/build-image-with-repackage:0.0.1.BUILD-SNAPSHOT") - .contains("---> Test Info buildpack building").contains("---> Test Info buildpack done") .contains("Successfully built image"); - removeImage("build-image-with-repackage", "0.0.1.BUILD-SNAPSHOT"); + ImageReference imageReference = ImageReference.of(ImageName.of("build-image-with-repackage"), + "0.0.1.BUILD-SNAPSHOT"); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + removeImage(imageReference); + } }); } @@ -127,9 +153,15 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { assertThat(original).isFile(); assertThat(buildLog(project)).contains("Building image") .contains("docker.io/library/build-image-classifier-with-repackage:0.0.1.BUILD-SNAPSHOT") - .contains("---> Test Info buildpack building").contains("---> Test Info buildpack done") .contains("Successfully built image"); - removeImage("build-image-classifier-with-repackage", "0.0.1.BUILD-SNAPSHOT"); + ImageReference imageReference = ImageReference + .of(ImageName.of("build-image-classifier-with-repackage"), "0.0.1.BUILD-SNAPSHOT"); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + removeImage(imageReference); + } }); } @@ -146,9 +178,15 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { assertThat(original).isFile(); assertThat(buildLog(project)).contains("Building image").contains( "docker.io/library/build-image-classifier-source-with-repackage:0.0.1.BUILD-SNAPSHOT") - .contains("---> Test Info buildpack building").contains("---> Test Info buildpack done") .contains("Successfully built image"); - removeImage("build-image-classifier-source-with-repackage", "0.0.1.BUILD-SNAPSHOT"); + ImageReference imageReference = ImageReference + .of(ImageName.of("build-image-classifier-source-with-repackage"), "0.0.1.BUILD-SNAPSHOT"); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + removeImage(imageReference); + } }); } @@ -165,9 +203,15 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { assertThat(original).doesNotExist(); assertThat(buildLog(project)).contains("Building image") .contains("example.com/test/build-image:0.0.1.BUILD-SNAPSHOT") - .contains("---> Test Info buildpack building").contains("---> Test Info buildpack done") .contains("Successfully built image"); - removeImage("example.com/test/build-image", "0.0.1.BUILD-SNAPSHOT"); + ImageReference imageReference = ImageReference + .of("example.com/test/build-image:0.0.1.BUILD-SNAPSHOT"); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + removeImage(imageReference); + } }); } @@ -176,14 +220,18 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { mavenBuild.project("build-image").goals("package") .systemProperty("spring-boot.build-image.pullPolicy", "IF_NOT_PRESENT") .systemProperty("spring-boot.build-image.imageName", "example.com/test/cmd-property-name:v1") - .systemProperty("spring-boot.build-image.builder", "springci/spring-boot-cnb-builder:0.0.1") - .systemProperty("spring-boot.build-image.runImage", "paketobuildpacks/run:tiny-cnb") + .systemProperty("spring-boot.build-image.builder", "paketobuildpacks/builder:full") + .systemProperty("spring-boot.build-image.runImage", "paketobuildpacks/run:full-cnb") .execute((project) -> { assertThat(buildLog(project)).contains("Building image") - .contains("example.com/test/cmd-property-name:v1") - .contains("---> Test Info buildpack building").contains("---> Test Info buildpack done") - .contains("Successfully built image"); - removeImage("example.com/test/cmd-property-name", "v1"); + .contains("example.com/test/cmd-property-name:v1").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(); + } + finally { + removeImage(imageReference); + } }); } @@ -193,21 +241,34 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { .systemProperty("spring-boot.build-image.pullPolicy", "IF_NOT_PRESENT").execute((project) -> { assertThat(buildLog(project)).contains("Building image") .contains("docker.io/library/build-image-v2-builder:0.0.1.BUILD-SNAPSHOT") - .contains("---> Test Info buildpack building").contains("---> Test Info buildpack done") .contains("Successfully built image"); - removeImage("docker.io/library/build-image-v2-builder", "0.0.1.BUILD-SNAPSHOT"); + ImageReference imageReference = ImageReference + .of("docker.io/library/build-image-v2-builder:0.0.1.BUILD-SNAPSHOT"); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + removeImage(imageReference); + } }); } @TestTemplate void whenBuildImageIsInvokedWithEmptyEnvEntry(MavenBuild mavenBuild) { - mavenBuild.project("build-image-empty-env-entry").goals("package").prepare(this::writeLongNameResource) - .systemProperty("spring-boot.build-image.pullPolicy", "IF_NOT_PRESENT").execute((project) -> { + mavenBuild.project("build-image-empty-env-entry").goals("package") + .systemProperty("spring-boot.build-image.pullPolicy", "IF_NOT_PRESENT") + .prepare(this::writeLongNameResource).execute((project) -> { assertThat(buildLog(project)).contains("Building image") .contains("docker.io/library/build-image-empty-env-entry:0.0.1.BUILD-SNAPSHOT") - .contains("---> Test Info buildpack building").contains("---> Test Info buildpack done") .contains("Successfully built image"); - removeImage("build-image-empty-env-entry", "0.0.1.BUILD-SNAPSHOT"); + ImageReference imageReference = ImageReference.of(ImageName.of("build-image-empty-env-entry"), + "0.0.1.BUILD-SNAPSHOT"); + try (GenericContainer container = new GenericContainer<>(imageReference.toString())) { + container.waitingFor(Wait.forLogMessage("Launched\\n", 1)).start(); + } + finally { + removeImage(imageReference); + } }); } @@ -222,7 +283,6 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { mavenBuild.project("build-image-builder-error").goals("package") .systemProperty("spring-boot.build-image.pullPolicy", "IF_NOT_PRESENT") .executeAndFail((project) -> assertThat(buildLog(project)).contains("Building image") - .contains("---> Test Info buildpack building").contains("Forced builder failure") .containsPattern("Builder lifecycle '.*' failed with status code")); } @@ -252,8 +312,7 @@ public class BuildImageTests extends AbstractArchiveIntegrationTests { } } - private void removeImage(String name, String version) { - ImageReference imageReference = ImageReference.of(ImageName.of(name), version); + private void removeImage(ImageReference imageReference) { try { new DockerApi().image().remove(imageReference, false); } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-builder-error/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-builder-error/pom.xml index 4866c1cd2e..5b7491e88e 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-builder-error/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-builder-error/pom.xml @@ -23,9 +23,8 @@ - springci/spring-boot-cnb-builder:0.0.1 - true + 13.9.9 diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-source-with-repackage/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-source-with-repackage/pom.xml index 15fd86bd7c..7734c543d6 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-source-with-repackage/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-source-with-repackage/pom.xml @@ -43,11 +43,6 @@ build-image - - - springci/spring-boot-cnb-builder:0.0.1 - - diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-source/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-source/pom.xml index e5d62a6c48..30b605a5bc 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-source/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-source/pom.xml @@ -37,11 +37,6 @@ build-image - - - springci/spring-boot-cnb-builder:0.0.1 - - diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-with-repackage/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-with-repackage/pom.xml index 997a7b24c3..d2f34ba4c6 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-with-repackage/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier-with-repackage/pom.xml @@ -27,11 +27,6 @@ build-image - - - springci/spring-boot-cnb-builder:0.0.1 - - diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier/pom.xml index 118ce18b48..ba64b1df5f 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-classifier/pom.xml @@ -21,11 +21,6 @@ build-image - - - springci/spring-boot-cnb-builder:0.0.1 - - diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-cmd-line/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-cmd-line/pom.xml deleted file mode 100644 index 0451a8426e..0000000000 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-cmd-line/pom.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - 4.0.0 - org.springframework.boot.maven.it - build-image - 0.0.1.BUILD-SNAPSHOT - - UTF-8 - @java.version@ - @java.version@ - - - - - @project.groupId@ - @project.artifactId@ - @project.version@ - - - - build-image - - - - - - - diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-cmd-line/src/main/java/org/test/SampleApplication.java b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-cmd-line/src/main/java/org/test/SampleApplication.java deleted file mode 100644 index 5053809ef1..0000000000 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-cmd-line/src/main/java/org/test/SampleApplication.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2012-2021 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.test; - -public class SampleApplication { - - public static void main(String[] args) throws Exception { - System.out.println("Launched"); - synchronized(args) { - args.wait(); // Prevent exit" - } - } - -} diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-custom-builder/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-custom-builder/pom.xml index db0c55aa6a..457cb7c933 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-custom-builder/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-custom-builder/pom.xml @@ -23,8 +23,8 @@ - springci/spring-boot-cnb-builder:0.0.1 - paketobuildpacks/run:tiny-cnb + paketobuildpacks/builder:full + paketobuildpacks/run:full-cnb diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-custom-name/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-custom-name/pom.xml index 0ad3c6f567..57ec39dd84 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-custom-name/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-custom-name/pom.xml @@ -23,7 +23,6 @@ - springci/spring-boot-cnb-builder:0.0.1 example.com/test/build-image:${project.version} diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-empty-env-entry/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-empty-env-entry/pom.xml index e0b7f897f6..e453fd95d6 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-empty-env-entry/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-empty-env-entry/pom.xml @@ -23,7 +23,6 @@ - springci/spring-boot-cnb-builder:0.0.1 diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-final-name/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-final-name/pom.xml index 11b81efa0a..599371978a 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-final-name/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-final-name/pom.xml @@ -24,9 +24,6 @@ final-name - - springci/spring-boot-cnb-builder:0.0.1 - diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-with-repackage/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-with-repackage/pom.xml index d9cd19b233..c9a9bd0322 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-with-repackage/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image-with-repackage/pom.xml @@ -27,11 +27,6 @@ build-image - - - springci/spring-boot-cnb-builder:0.0.1 - - diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image/pom.xml b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image/pom.xml index ab9c918a02..0451a8426e 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image/pom.xml +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/intTest/projects/build-image/pom.xml @@ -21,11 +21,6 @@ build-image - - - springci/spring-boot-cnb-builder:0.0.1 - - diff --git a/src/spring-boot-builder/README.adoc b/src/spring-boot-builder/README.adoc deleted file mode 100644 index dfaf0efb07..0000000000 --- a/src/spring-boot-builder/README.adoc +++ /dev/null @@ -1,15 +0,0 @@ -= Spring Boot Test Builder - -This directory contains a Cloud Native Buildpacks https://buildpacks.io/docs/concepts/components/builder/[builder] and https://buildpacks.io/docs/concepts/components/buildpack/[buildpack] that is used by integration tests to verify the behavior of the Spring Boot build plugins. - -== Creating the builder - -* Install the https://buildpacks.io/docs/install-pack/[pack CLI] -* Authenticate to Docker Hub via `docker login` using the `springci` repository credentials -* Use `pack` to create the builder image and publish it to Docker Hub: - -[source,bash] ----- -$ cd builder -$ pack builder create springci/spring-boot-cnb-builder:0.0.1 --config builder.toml --publish ----- diff --git a/src/spring-boot-builder/builder/builder.toml b/src/spring-boot-builder/builder/builder.toml deleted file mode 100644 index 5ee00bb862..0000000000 --- a/src/spring-boot-builder/builder/builder.toml +++ /dev/null @@ -1,18 +0,0 @@ -# Buildpacks to include in builder -[[buildpacks]] -id = "spring-boot/test-info" -version = "0.0.1" -uri = "../buildpacks/test-info" - -# Order used for detection -[[order]] -[[order.group]] -id = "spring-boot/test-info" -version = "0.0.1" - -# Stack that will be used by the builder -[stack] -id = "io.paketo.stacks.tiny" -build-image = "index.docker.io/paketobuildpacks/build:1.2.2-tiny-cnb" -run-image = "index.docker.io/paketobuildpacks/run:tiny-cnb" -run-image-mirrors = ["gcr.io/paketo-buildpacks/run:tiny-cnb"] diff --git a/src/spring-boot-builder/buildpacks/test-info/bin/build b/src/spring-boot-builder/buildpacks/test-info/bin/build deleted file mode 100755 index 7698b0f6ba..0000000000 --- a/src/spring-boot-builder/buildpacks/test-info/bin/build +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env bash -set -eo pipefail - -echo "---> Test Info buildpack building" - -# INPUT ARGUMENTS -platform_dir=$2 -env_dir=${platform_dir}/env -bindings_dir=${platform_dir}/bindings - -if [[ -f ${env_dir}/FORCE_FAILURE ]]; then - echo "Forced builder failure" - exit 1 -fi - -if compgen -G "${env_dir}/*" > /dev/null; then - for var in ${env_dir}/*; do - echo "env: $(basename ${var})=$(<${var})" - done -fi - -if compgen -G "${bindings_dir}/*" > /dev/null; then - for binding in ${bindings_dir}/*; do - for f in ${binding}/*; do - echo "binding: $(basename ${binding})/$(basename ${f})=$(<${f})" - done - done -fi - -echo "---> Test Info buildpack done" diff --git a/src/spring-boot-builder/buildpacks/test-info/bin/detect b/src/spring-boot-builder/buildpacks/test-info/bin/detect deleted file mode 100755 index f7e1c76ebc..0000000000 --- a/src/spring-boot-builder/buildpacks/test-info/bin/detect +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env bash -set -eo pipefail - -# 1. CHECK IF APPLICABLE -if [[ ! -f META-INF/MANIFEST.MF ]]; then - exit 100 -fi - -# 2. GET ARGS -plan_path=$2 - -# 3. DECLARE DEPENDENCIES (OPTIONAL) -cat >> "${plan_path}" <