use of org.eclipse.jkube.kit.common.JKubeConfiguration in project jkube by eclipse.
the class BuildUtilTest method extractBaseFromDockerfile_withNonExistentDockerfile_shouldReturnNull.
@Test
public void extractBaseFromDockerfile_withNonExistentDockerfile_shouldReturnNull() {
// Given
final JKubeConfiguration jKubeConfiguration = JKubeConfiguration.builder().sourceDirectory("src").project(JavaProject.builder().baseDirectory(new File(".")).build()).build();
final BuildConfiguration buildConfiguration = BuildConfiguration.builder().dockerFileFile(new File("Dockerfile")).build();
// When
final String result = extractBaseFromDockerfile(jKubeConfiguration, buildConfiguration);
// Then
assertThat(result).isNull();
}
use of org.eclipse.jkube.kit.common.JKubeConfiguration in project jkube by eclipse.
the class AssemblyManager method createAssemblyArchive.
private void createAssemblyArchive(AssemblyConfiguration assemblyConfig, JKubeConfiguration params, BuildDirs buildDirs, ArchiveCompression compression, Map<Assembly, List<AssemblyFileEntry>> layers) throws IOException {
if (layers.isEmpty()) {
return;
}
AssemblyConfigurationSource source = new AssemblyConfigurationSource(params, buildDirs, assemblyConfig);
JKubeBuildTarArchiver jkubeTarArchiver = new JKubeBuildTarArchiver();
AssemblyMode buildMode = assemblyConfig.getMode();
try {
layers.values().stream().flatMap(List::stream).filter(afe -> StringUtils.isNotBlank(afe.getFileMode())).forEach(jkubeTarArchiver::setFileMode);
jkubeTarArchiver.createArchive(source.getOutputDirectory(), buildDirs, compression);
} catch (IOException e) {
String error = "Failed to create assembly for docker image " + " (with mode '" + buildMode + "'): " + e.getMessage() + ".";
if (params.getProject().getArtifact() == null) {
error += " If you include the build artifact please ensure that you have " + "built the artifact before with 'mvn package' (should be available in the target/ dir). " + "Please see the documentation (section \"Assembly\") for more information.";
}
throw new IOException(error, e);
}
}
use of org.eclipse.jkube.kit.common.JKubeConfiguration in project jkube by eclipse.
the class AssemblyManager method copyFilesToFinalTarballDirectory.
public Map<Assembly, List<AssemblyFileEntry>> copyFilesToFinalTarballDirectory(JKubeConfiguration configuration, BuildDirs buildDirs, AssemblyConfiguration assemblyConfiguration) throws IOException {
final Map<Assembly, List<AssemblyFileEntry>> entries = new LinkedHashMap<>();
FileUtil.createDirectory(new File(buildDirs.getOutputDirectory(), assemblyConfiguration.getTargetDir()));
final List<Assembly> layers = assemblyConfiguration.getProcessedLayers(configuration);
if (layers.size() > 1 && layers.stream().anyMatch(l -> StringUtils.isBlank(l.getId()))) {
throw new IllegalStateException("Assemblies with more than one layer require a proper id for each layer");
}
for (Assembly layer : layers) {
entries.put(layer, copyLayerFilesToFinalTarballDirectory(configuration.getProject(), buildDirs, assemblyConfiguration, layer));
}
return entries;
}
use of org.eclipse.jkube.kit.common.JKubeConfiguration in project jkube by eclipse.
the class AssemblyManagerCreateDockerTarArchiveTest method withoutDockerfile.
@Test
public void withoutDockerfile() throws IOException {
// Given
final JKubeConfiguration jKubeConfiguration = createJKubeConfiguration();
final BuildConfiguration buildConfiguration = BuildConfiguration.builder().build();
// When
File dockerArchiveFile = assemblyManager.createDockerTarArchive("test-image", jKubeConfiguration, buildConfiguration, prefixedLogger, null);
// Then
assertTargetHasDockerDirectories("test-image");
ArchiveAssertions.assertThat(dockerArchiveFile).isFile().hasName("docker-build.tar").hasSameContentAsDirectory(getExpectedDirectory("without-dockerfile"));
assertDockerFile("test-image").hasContent(DOCKERFILE_DEFAULT_FALLBACK_CONTENT);
assertBuildDirectoryFileTree("test-image").containsExactlyInAnyOrder("Dockerfile", "jkube-generated-layer-final-artifact", "jkube-generated-layer-final-artifact/maven", "jkube-generated-layer-final-artifact/maven/test-0.1.0.jar", "maven");
}
use of org.eclipse.jkube.kit.common.JKubeConfiguration in project jkube by eclipse.
the class AssemblyManagerCreateDockerTarArchiveTest method withDockerfileInBaseDirectoryAndDockerinclude.
@Test
public void withDockerfileInBaseDirectoryAndDockerinclude() throws IOException {
// Given
final File dockerFile = new File(baseDirectory, "Dockerfile");
writeLineToFile(dockerFile, "FROM openjdk:jre");
writeLineToFile(new File(baseDirectory, ".jkube-dockerinclude"), "**/*.txt");
writeLineToFile(new File(targetDirectory, "ill-be-included.txt"), "Hello");
writeLineToFile(new File(targetDirectory, "ill-wont-be-included"), "Hello");
final JKubeConfiguration configuration = createJKubeConfiguration();
final BuildConfiguration jKubeBuildConfiguration = BuildConfiguration.builder().dockerFileFile(dockerFile).dockerFile(dockerFile.getPath()).build();
// When
final File dockerArchiveFile = assemblyManager.createDockerTarArchive("test-image", configuration, jKubeBuildConfiguration, prefixedLogger, null);
// Then
assertTargetHasDockerDirectories("test-image");
ArchiveAssertions.assertThat(dockerArchiveFile).isFile().hasName("docker-build.tar").hasSameContentAsDirectory(getExpectedDirectory("with-dockerfile-in-base-directory-and-dockerinclude"));
assertDockerFile("test-image").hasContent("FROM openjdk:jre\n");
assertBuildDirectoryFileTree("test-image").containsExactlyInAnyOrder("Dockerfile", "maven", "maven/test-0.1.0.jar", "maven/target", "maven/target/ill-be-included.txt");
}
Aggregations