From 46139a25c313c501cf5ba21fe81d111d2c6aed10 Mon Sep 17 00:00:00 2001 From: Georgios Andrianakis Date: Thu, 9 Apr 2020 08:06:05 +0300 Subject: [PATCH] Properly handle non-http service in s2i Fixes: #8481 --- .../image/s2i/deployment/S2iProcessor.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/extensions/container-image/container-image-s2i/deployment/src/main/java/io/quarkus/container/image/s2i/deployment/S2iProcessor.java b/extensions/container-image/container-image-s2i/deployment/src/main/java/io/quarkus/container/image/s2i/deployment/S2iProcessor.java index 8ac484b7ef7ff..d121ae4f11854 100644 --- a/extensions/container-image/container-image-s2i/deployment/src/main/java/io/quarkus/container/image/s2i/deployment/S2iProcessor.java +++ b/extensions/container-image/container-image-s2i/deployment/src/main/java/io/quarkus/container/image/s2i/deployment/S2iProcessor.java @@ -174,17 +174,23 @@ public void s2iBuildFromJar(S2iConfig s2iConfig, ContainerImageConfig containerI return; } + Optional openshiftYml = generatedResources + .stream() + .filter(r -> r.getName().endsWith("kubernetes/openshift.yml")) + .findFirst(); + + if (!openshiftYml.isPresent()) { + LOG.warn( + "No Openshift manifests were generated (most likely due to the fact that the service is not an HTTP service) so no s2i process will be taking place"); + return; + } + String namespace = Optional.ofNullable(kubernetesClient.getClient().getNamespace()).orElse("default"); LOG.info("Performing s2i binary build with jar on server: " + kubernetesClient.getClient().getMasterUrl() + " in namespace:" + namespace + "."); String image = containerImage.getImage(); - GeneratedFileSystemResourceBuildItem openshiftYml = generatedResources - .stream() - .filter(r -> r.getName().endsWith("kubernetes/openshift.yml")) - .findFirst().orElseThrow(() -> new IllegalStateException("Could not find kubernetes/openshift.yml")); - - createContainerImage(kubernetesClient, openshiftYml, s2iConfig, out.getOutputDirectory(), jar.getPath(), + createContainerImage(kubernetesClient, openshiftYml.get(), s2iConfig, out.getOutputDirectory(), jar.getPath(), out.getOutputDirectory().resolve("lib")); artifactResultProducer.produce(new ArtifactResultBuildItem(null, "jar-container", Collections.emptyMap())); containerImageResultProducer.produce(