|
|
|
|
@@ -1,5 +1,5 @@
|
|
|
|
|
/*
|
|
|
|
|
* Copyright 2012-2020 the original author or authors.
|
|
|
|
|
* 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.
|
|
|
|
|
@@ -29,8 +29,6 @@ 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;
|
|
|
|
|
@@ -61,14 +59,10 @@ 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("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);
|
|
|
|
|
}
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@TestTemplate
|
|
|
|
|
@@ -78,14 +72,10 @@ 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("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);
|
|
|
|
|
}
|
|
|
|
|
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");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@TestTemplate
|
|
|
|
|
@@ -95,15 +85,11 @@ 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("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);
|
|
|
|
|
}
|
|
|
|
|
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");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@TestTemplate
|
|
|
|
|
@@ -111,18 +97,14 @@ class BootBuildImageIntegrationTests {
|
|
|
|
|
writeMainClass();
|
|
|
|
|
writeLongNameResource();
|
|
|
|
|
BuildResult result = this.gradleBuild.build("bootBuildImage", "--imageName=example/test-image-cmd",
|
|
|
|
|
"--builder=paketobuildpacks/builder:full", "--runImage=paketobuildpacks/run:full-cnb");
|
|
|
|
|
"--builder=springci/spring-boot-cnb-builder:0.0.1", "--runImage=paketobuildpacks/run:tiny-cnb");
|
|
|
|
|
assertThat(result.task(":bootBuildImage").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
|
|
|
|
|
assertThat(result.getOutput()).contains("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);
|
|
|
|
|
}
|
|
|
|
|
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");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@TestTemplate
|
|
|
|
|
@@ -140,6 +122,7 @@ 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");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -170,17 +153,12 @@ 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("paketo-buildpacks/builder");
|
|
|
|
|
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"));
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
removeImage(projectName);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void writeMainClass() {
|
|
|
|
|
@@ -222,4 +200,9 @@ class BootBuildImageIntegrationTests {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void removeImage(String name) throws IOException {
|
|
|
|
|
ImageReference imageReference = ImageReference.of(ImageName.of(name));
|
|
|
|
|
new DockerApi().image().remove(imageReference, false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|