Merge branch '2.3.x'
Closes gh-21933
This commit is contained in:
@@ -50,6 +50,11 @@ The following table summarizes the available properties and their default values
|
||||
| Name of the Builder image to use.
|
||||
| `gcr.io/paketo-buildpacks/builder:base-platform-api-0.3`
|
||||
|
||||
| `runImage`
|
||||
| `--runImage`
|
||||
| Name of the run image to use.
|
||||
| No default value, indicating the run image specified in Builder metadata should be used.
|
||||
|
||||
| `imageName`
|
||||
| `--imageName`
|
||||
| {spring-boot-api}/buildpack/platform/docker/type/ImageReference.html#of-java.lang.String-[Image name] for the generated image.
|
||||
@@ -79,8 +84,8 @@ The following table summarizes the available properties and their default values
|
||||
|
||||
|
||||
[[build-image-example-custom-image-builder]]
|
||||
==== Custom Image Builder
|
||||
If you need to customize the builder used to create the image, configure the task as shown in the following example:
|
||||
==== Custom Image Builder and Run Image
|
||||
If you need to customize the builder used to create the image or the run image used to launch the built image, configure the task as shown in the following example:
|
||||
|
||||
[source,groovy,indent=0,subs="verbatim,attributes",role="primary"]
|
||||
.Groovy
|
||||
@@ -94,13 +99,13 @@ include::../gradle/packaging/boot-build-image-builder.gradle[tags=builder]
|
||||
include::../gradle/packaging/boot-build-image-builder.gradle.kts[tags=builder]
|
||||
----
|
||||
|
||||
This configuration will use a builder image with the name `mine/java-cnb-builder` and the tag `latest`.
|
||||
This configuration will use a builder image with the name `mine/java-cnb-builder` and the tag `latest`, and the run image named `mine/java-cnb-run` and the tag `latest`.
|
||||
|
||||
The builder can be specified on the command line as well, as shown in this example:
|
||||
The builder and run image can be specified on the command line as well, as shown in this example:
|
||||
|
||||
[indent=0]
|
||||
----
|
||||
$ gradle bootBuildImage --builder=mine/java-cnb-builder
|
||||
$ gradle bootBuildImage --builder=mine/java-cnb-builder --runImage=mine/java-cnb-run
|
||||
----
|
||||
|
||||
|
||||
|
||||
@@ -10,5 +10,6 @@ bootJar {
|
||||
// tag::builder[]
|
||||
bootBuildImage {
|
||||
builder = "mine/java-cnb-builder"
|
||||
runImage = "mine/java-cnb-run"
|
||||
}
|
||||
// end::builder[]
|
||||
|
||||
@@ -12,5 +12,6 @@ tasks.getByName<BootJar>("bootJar") {
|
||||
// tag::builder[]
|
||||
tasks.getByName<BootBuildImage>("bootBuildImage") {
|
||||
builder = "mine/java-cnb-builder"
|
||||
runImage = "mine/java-cnb-run"
|
||||
}
|
||||
// end::builder[]
|
||||
|
||||
@@ -61,6 +61,8 @@ public class BootBuildImage extends DefaultTask {
|
||||
|
||||
private String builder;
|
||||
|
||||
private String runImage;
|
||||
|
||||
private Map<String, String> environment = new HashMap<>();
|
||||
|
||||
private boolean cleanCache;
|
||||
@@ -133,6 +135,26 @@ public class BootBuildImage extends DefaultTask {
|
||||
this.builder = builder;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the run image that will be included in the built image. When {@code null},
|
||||
* the run image bundled with the builder will be used.
|
||||
* @return the run image
|
||||
*/
|
||||
@Input
|
||||
@Optional
|
||||
public String getRunImage() {
|
||||
return this.runImage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the run image that will be included in the built image.
|
||||
* @param runImage the run image
|
||||
*/
|
||||
@Option(option = "runImage", description = "The name of the run image to use")
|
||||
public void setRunImage(String runImage) {
|
||||
this.runImage = runImage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the environment that will be used when building the image.
|
||||
* @return the environment
|
||||
@@ -228,6 +250,7 @@ public class BootBuildImage extends DefaultTask {
|
||||
|
||||
private BuildRequest customize(BuildRequest request) {
|
||||
request = customizeBuilder(request);
|
||||
request = customizeRunImage(request);
|
||||
request = customizeEnvironment(request);
|
||||
request = customizeCreator(request);
|
||||
request = request.withCleanCache(this.cleanCache);
|
||||
@@ -242,6 +265,13 @@ public class BootBuildImage extends DefaultTask {
|
||||
return request;
|
||||
}
|
||||
|
||||
private BuildRequest customizeRunImage(BuildRequest request) {
|
||||
if (StringUtils.hasText(this.runImage)) {
|
||||
return request.withRunImage(ImageReference.of(this.runImage));
|
||||
}
|
||||
return request;
|
||||
}
|
||||
|
||||
private BuildRequest customizeEnvironment(BuildRequest request) {
|
||||
if (this.environment != null && !this.environment.isEmpty()) {
|
||||
request = request.withEnv(this.environment);
|
||||
|
||||
@@ -89,13 +89,14 @@ class BootBuildImageIntegrationTests {
|
||||
}
|
||||
|
||||
@TestTemplate
|
||||
void buildsImageWithCustomBuilder() throws IOException {
|
||||
void buildsImageWithCustomBuilderAndRunImage() throws IOException {
|
||||
writeMainClass();
|
||||
writeLongNameResource();
|
||||
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("paketo-buildpacks/builder:full-cf-platform-api-0.3");
|
||||
assertThat(result.getOutput()).contains("paketo-buildpacks/run:full-cnb-cf");
|
||||
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();
|
||||
@@ -110,10 +111,12 @@ class BootBuildImageIntegrationTests {
|
||||
writeMainClass();
|
||||
writeLongNameResource();
|
||||
BuildResult result = this.gradleBuild.build("bootBuildImage", "--imageName=example/test-image-cmd",
|
||||
"--builder=gcr.io/paketo-buildpacks/builder:full-cf-platform-api-0.3");
|
||||
"--builder=gcr.io/paketo-buildpacks/builder:full-cf-platform-api-0.3",
|
||||
"--runImage=gcr.io/paketo-buildpacks/run:full-cnb-cf");
|
||||
assertThat(result.task(":bootBuildImage").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
|
||||
assertThat(result.getOutput()).contains("example/test-image-cmd");
|
||||
assertThat(result.getOutput()).contains("paketo-buildpacks/builder:full-cf-platform-api-0.3");
|
||||
assertThat(result.getOutput()).contains("paketo-buildpacks/run:full-cnb-cf");
|
||||
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();
|
||||
|
||||
@@ -183,4 +183,15 @@ class BootBuildImageTests {
|
||||
assertThat(this.buildImage.createRequest().getBuilder().getName()).isEqualTo("test/builder");
|
||||
}
|
||||
|
||||
@Test
|
||||
void whenNoRunImageIsConfiguredThenRequestUsesDefaultRunImage() {
|
||||
assertThat(this.buildImage.createRequest().getRunImage()).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void whenRunImageIsConfiguredThenRequestUsesSpecifiedRunImage() {
|
||||
this.buildImage.setRunImage("example.com/test/run:1.0");
|
||||
assertThat(this.buildImage.createRequest().getRunImage().getName()).isEqualTo("test/run");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
plugins {
|
||||
id 'java'
|
||||
id 'org.springframework.boot' version '{version}'
|
||||
}
|
||||
|
||||
sourceCompatibility = '1.8'
|
||||
targetCompatibility = '1.8'
|
||||
|
||||
bootBuildImage {
|
||||
imageName = "example/test-image-custom"
|
||||
builder = "gcr.io/paketo-buildpacks/builder:full-cf-platform-api-0.3"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
plugins {
|
||||
id 'java'
|
||||
id 'org.springframework.boot' version '{version}'
|
||||
}
|
||||
|
||||
sourceCompatibility = '1.8'
|
||||
targetCompatibility = '1.8'
|
||||
|
||||
bootBuildImage {
|
||||
imageName = "example/test-image-custom"
|
||||
builder = "gcr.io/paketo-buildpacks/builder:full-cf-platform-api-0.3"
|
||||
runImage = "gcr.io/paketo-buildpacks/run:full-cnb-cf"
|
||||
}
|
||||
@@ -6,6 +6,6 @@ plugins {
|
||||
sourceCompatibility = '1.8'
|
||||
targetCompatibility = '1.8'
|
||||
|
||||
bootBuildImage {
|
||||
imageName = "example/test-image-name"
|
||||
}
|
||||
bootBuildImage {
|
||||
imageName = "example/test-image-name"
|
||||
}
|
||||
|
||||
@@ -6,6 +6,6 @@ plugins {
|
||||
sourceCompatibility = '1.8'
|
||||
targetCompatibility = '1.8'
|
||||
|
||||
bootBuildImage {
|
||||
environment = ["BP_JVM_VERSION" : "13.9.9"]
|
||||
}
|
||||
bootBuildImage {
|
||||
environment = ["BP_JVM_VERSION": "13.9.9"]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user