use of com.google.cloud.tools.jib.api.buildplan.ContainerBuildPlan in project jib by GoogleContainerTools.
the class JarFilesTest method testToJibContainerBuilder_optionalParameters.
@Test
public void testToJibContainerBuilder_optionalParameters() throws IOException, InvalidImageReferenceException {
when(mockCommonContainerConfigCliOptions.getFrom()).thenReturn(Optional.of("base-image"));
when(mockCommonContainerConfigCliOptions.getExposedPorts()).thenReturn(ImmutableSet.of(Port.udp(123)));
when(mockCommonContainerConfigCliOptions.getVolumes()).thenReturn(ImmutableSet.of(AbsoluteUnixPath.get("/volume1"), AbsoluteUnixPath.get("/volume2")));
when(mockCommonContainerConfigCliOptions.getEnvironment()).thenReturn(ImmutableMap.of("key1", "value1"));
when(mockCommonContainerConfigCliOptions.getLabels()).thenReturn(ImmutableMap.of("label", "mylabel"));
when(mockCommonContainerConfigCliOptions.getUser()).thenReturn(Optional.of("customUser"));
when(mockCommonContainerConfigCliOptions.getFormat()).thenReturn(Optional.of(ImageFormat.OCI));
when(mockCommonContainerConfigCliOptions.getProgramArguments()).thenReturn(ImmutableList.of("arg1"));
when(mockCommonContainerConfigCliOptions.getEntrypoint()).thenReturn(ImmutableList.of("custom", "entrypoint"));
when(mockCommonContainerConfigCliOptions.getCreationTime()).thenReturn(Optional.of(Instant.ofEpochSecond(5)));
JibContainerBuilder containerBuilder = JarFiles.toJibContainerBuilder(mockStandardExplodedProcessor, mockJarCommand, mockCommonCliOptions, mockCommonContainerConfigCliOptions, mockLogger);
ContainerBuildPlan buildPlan = containerBuilder.toContainerBuildPlan();
assertThat(buildPlan.getBaseImage()).isEqualTo("base-image");
assertThat(buildPlan.getExposedPorts()).isEqualTo(ImmutableSet.of(Port.udp(123)));
assertThat(buildPlan.getVolumes()).isEqualTo(ImmutableSet.of(AbsoluteUnixPath.get("/volume1"), AbsoluteUnixPath.get("/volume2")));
assertThat(buildPlan.getEnvironment()).isEqualTo(ImmutableMap.of("key1", "value1"));
assertThat(buildPlan.getLabels()).isEqualTo(ImmutableMap.of("label", "mylabel"));
assertThat(buildPlan.getUser()).isEqualTo("customUser");
assertThat(buildPlan.getFormat()).isEqualTo(ImageFormat.OCI);
assertThat(buildPlan.getCmd()).isEqualTo(ImmutableList.of("arg1"));
assertThat(buildPlan.getEntrypoint()).isEqualTo(ImmutableList.of("custom", "entrypoint"));
assertThat(buildPlan.getCreationTime()).isEqualTo(Instant.ofEpochSecond(5));
}
use of com.google.cloud.tools.jib.api.buildplan.ContainerBuildPlan in project jib by GoogleContainerTools.
the class JarFilesTest method testToJibContainerBuilder_explodedLayeredSpringBoot_basicInfo.
@Test
public void testToJibContainerBuilder_explodedLayeredSpringBoot_basicInfo() throws IOException, InvalidImageReferenceException {
when(mockSpringBootExplodedProcessor.getJavaVersion()).thenReturn(8);
FileEntriesLayer layer = FileEntriesLayer.builder().setName("classes").addEntry(Paths.get("path/to/tempDirectory/BOOT-INF/classes/class1.class"), AbsoluteUnixPath.get("/app/BOOT-INF/classes/class1.class")).build();
when(mockCommonContainerConfigCliOptions.getFrom()).thenReturn(Optional.empty());
when(mockSpringBootExplodedProcessor.createLayers()).thenReturn(Arrays.asList(layer));
when(mockSpringBootExplodedProcessor.computeEntrypoint(anyList())).thenReturn(ImmutableList.of("java", "-cp", "/app", "org.springframework.boot.loader.JarLauncher"));
when(mockCommonContainerConfigCliOptions.getFrom()).thenReturn(Optional.empty());
JibContainerBuilder containerBuilder = JarFiles.toJibContainerBuilder(mockSpringBootExplodedProcessor, mockJarCommand, mockCommonCliOptions, mockCommonContainerConfigCliOptions, mockLogger);
ContainerBuildPlan buildPlan = containerBuilder.toContainerBuildPlan();
assertThat(buildPlan.getBaseImage()).isEqualTo("eclipse-temurin:8-jre");
assertThat(buildPlan.getPlatforms()).isEqualTo(ImmutableSet.of(new Platform("amd64", "linux")));
assertThat(buildPlan.getCreationTime()).isEqualTo(Instant.EPOCH);
assertThat(buildPlan.getFormat()).isEqualTo(ImageFormat.Docker);
assertThat(buildPlan.getEnvironment()).isEmpty();
assertThat(buildPlan.getLabels()).isEmpty();
assertThat(buildPlan.getVolumes()).isEmpty();
assertThat(buildPlan.getExposedPorts()).isEmpty();
assertThat(buildPlan.getUser()).isNull();
assertThat(buildPlan.getWorkingDirectory()).isNull();
assertThat(buildPlan.getEntrypoint()).containsExactly("java", "-cp", "/app", "org.springframework.boot.loader.JarLauncher").inOrder();
assertThat(buildPlan.getLayers()).hasSize(1);
assertThat(buildPlan.getLayers().get(0).getName()).isEqualTo("classes");
assertThat(((FileEntriesLayer) buildPlan.getLayers().get(0)).getEntries()).containsExactlyElementsIn(FileEntriesLayer.builder().addEntry(Paths.get("path/to/tempDirectory/BOOT-INF/classes/class1.class"), AbsoluteUnixPath.get("/app/BOOT-INF/classes/class1.class")).build().getEntries());
}
use of com.google.cloud.tools.jib.api.buildplan.ContainerBuildPlan in project jib by GoogleContainerTools.
the class WarFilesTest method testToJibContainerBuilder_noProgramArgumentsSpecified.
@Test
public void testToJibContainerBuilder_noProgramArgumentsSpecified() throws IOException, InvalidImageReferenceException {
JibContainerBuilder containerBuilder = WarFiles.toJibContainerBuilder(mockStandardWarExplodedProcessor, mockCommonCliOptions, mockCommonContainerConfigCliOptions, mockLogger);
ContainerBuildPlan buildPlan = containerBuilder.toContainerBuildPlan();
assertThat(buildPlan.getCmd()).isNull();
}
use of com.google.cloud.tools.jib.api.buildplan.ContainerBuildPlan in project jib by GoogleContainerTools.
the class BuildFilesTest method testToBuildFileSpec_withTemplating.
@Test
public void testToBuildFileSpec_withTemplating() throws URISyntaxException, InvalidImageReferenceException, IOException {
Path buildfile = Paths.get(Resources.getResource("buildfiles/projects/templating/valid.yaml").toURI());
Mockito.when(buildCli.getTemplateParameters()).thenReturn(ImmutableMap.of(// keys that are defined but not used do not throw an error
"unused", // keys that are defined but not used do not throw an error
"ignored", "key", "templateKey", "value", "templateValue", "repeated", "repeatedValue"));
JibContainerBuilder jibContainerBuilder = BuildFiles.toJibContainerBuilder(buildfile.getParent(), buildfile, buildCli, commonCliOptions, consoleLogger);
ContainerBuildPlan resolved = jibContainerBuilder.toContainerBuildPlan();
Map<String, String> expectedLabels = ImmutableMap.<String, String>builder().put("templateKey", "templateValue").put("label1", "repeatedValue").put("label2", "repeatedValue").put("label3", "${escaped}").put("label4", "free$").put("unmatched", "${").build();
Assert.assertEquals(expectedLabels, resolved.getLabels());
}
use of com.google.cloud.tools.jib.api.buildplan.ContainerBuildPlan in project jib by GoogleContainerTools.
the class BuildFilesTest method testToJibContainerBuilder_allProperties.
@Test
public void testToJibContainerBuilder_allProperties() throws URISyntaxException, IOException, InvalidImageReferenceException {
Path buildfile = Paths.get(Resources.getResource("buildfiles/projects/allProperties/jib.yaml").toURI());
Path projectRoot = buildfile.getParent();
JibContainerBuilder jibContainerBuilder = BuildFiles.toJibContainerBuilder(projectRoot, buildfile, buildCli, commonCliOptions, consoleLogger);
ContainerBuildPlan resolved = jibContainerBuilder.toContainerBuildPlan();
Assert.assertEquals("ubuntu", resolved.getBaseImage());
Assert.assertEquals(Instant.ofEpochMilli(2000), resolved.getCreationTime());
Assert.assertEquals(ImageFormat.OCI, resolved.getFormat());
Assert.assertEquals(ImmutableSet.of(new Platform("arm", "linux"), new Platform("amd64", "darwin")), resolved.getPlatforms());
Assert.assertEquals(ImmutableMap.of("KEY1", "v1", "KEY2", "v2"), resolved.getEnvironment());
Assert.assertEquals(ImmutableSet.of(AbsoluteUnixPath.get("/volume1"), AbsoluteUnixPath.get("/volume2")), resolved.getVolumes());
Assert.assertEquals(ImmutableMap.of("label1", "l1", "label2", "l2"), resolved.getLabels());
Assert.assertEquals(ImmutableSet.of(Port.udp(123), Port.tcp(456), Port.tcp(789)), resolved.getExposedPorts());
Assert.assertEquals("customUser", resolved.getUser());
Assert.assertEquals(AbsoluteUnixPath.get("/home"), resolved.getWorkingDirectory());
Assert.assertEquals(ImmutableList.of("sh", "script.sh"), resolved.getEntrypoint());
Assert.assertEquals(ImmutableList.of("--param", "param"), resolved.getCmd());
Assert.assertEquals(1, resolved.getLayers().size());
FileEntriesLayer resolvedLayer = (FileEntriesLayer) resolved.getLayers().get(0);
Assert.assertEquals("scripts", resolvedLayer.getName());
Assert.assertEquals(FileEntriesLayer.builder().addEntry(projectRoot.resolve("project/script.sh"), AbsoluteUnixPath.get("/home/script.sh")).build().getEntries(), resolvedLayer.getEntries());
Assert.assertEquals(LayerObject.Type.FILE_ENTRIES, resolvedLayer.getType());
}
Aggregations