You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kie.apache.org by ti...@apache.org on 2024/09/13 14:40:28 UTC

(incubator-kie-tools) branch main updated: NO-ISSUE: Use `image-builder` and `maven-m2-repo-via-http-image` to build `serverless-logic-web-tools-swf-dev-mode-image` (#2574)

This is an automated email from the ASF dual-hosted git repository.

tiagobento pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-tools.git


The following commit(s) were added to refs/heads/main by this push:
     new 9e7a258da45 NO-ISSUE: Use `image-builder` and `maven-m2-repo-via-http-image` to build `serverless-logic-web-tools-swf-dev-mode-image` (#2574)
9e7a258da45 is described below

commit 9e7a258da451b3a784f141e62d6ff6c1fefd5020
Author: Thiago Lugli <th...@users.noreply.github.com>
AuthorDate: Fri Sep 13 11:40:24 2024 -0300

    NO-ISSUE: Use `image-builder` and `maven-m2-repo-via-http-image` to build `serverless-logic-web-tools-swf-dev-mode-image` (#2574)
---
 .../Containerfile                                  | 16 +++----
 .../{Containerfile => entrypoint.sh}               | 41 +++++-----------
 .../env/index.js                                   | 13 ++++++
 .../package.json                                   | 31 ++++++++-----
 .../pom.xml                                        | 54 ----------------------
 .../openshift/pipelines/SpinUpDevModePipeline.ts   | 17 +++++++
 pnpm-lock.yaml                                     |  6 +++
 repo/graph.dot                                     |  1 +
 repo/graph.json                                    |  5 ++
 9 files changed, 82 insertions(+), 102 deletions(-)

diff --git a/packages/serverless-logic-web-tools-swf-dev-mode-image/Containerfile b/packages/serverless-logic-web-tools-swf-dev-mode-image/Containerfile
index e4d742a7937..4d801e06da2 100644
--- a/packages/serverless-logic-web-tools-swf-dev-mode-image/Containerfile
+++ b/packages/serverless-logic-web-tools-swf-dev-mode-image/Containerfile
@@ -26,7 +26,8 @@ RUN chown kogito /home/kogito/.m2
 USER kogito
 
 COPY --chown=kogito:root dist-dev/quarkus-app/ /home/kogito/serverless-logic-web-tools-swf-deployment-quarkus-app/
-COPY --chown=kogito:root dist-dev/quarkus-app-m2/ /home/kogito/.m2/repository
+COPY --chown=kogito:root dist-dev/settings.xml /home/kogito/.m2/settings.xml
+COPY --chown=kogito:root entrypoint.sh /home/kogito/entrypoint.sh
 
 WORKDIR /home/kogito/serverless-logic-web-tools-swf-deployment-quarkus-app/
 
@@ -35,16 +36,15 @@ RUN rm -rf src/test/ && \
   quarkus:go-offline \
   -B \
   -ntp \
+  -s /home/kogito/.m2/settings.xml \
   -Dmaven.test.skip \
+  -Dmaven.repo.local=/home/kogito/.m2/repository \
   -Dquarkus-profiles=build,dev
 
 USER root
-RUN chmod -R 775 /home/kogito
+RUN chmod -R 775 /home/kogito && mkdir -p -m 777 /tmp/app
 USER kogito
 
-ENTRYPOINT mvn quarkus:dev \
-  quarkus:go-offline \
-  -nsu \
-  -Ddebug=false \
-  -Dmaven.repo.local=/home/kogito/.m2/repository \
-  -Dquarkus.http.port=8080
+EXPOSE 8080
+
+ENTRYPOINT [ "/home/kogito/entrypoint.sh" ]
diff --git a/packages/serverless-logic-web-tools-swf-dev-mode-image/Containerfile b/packages/serverless-logic-web-tools-swf-dev-mode-image/entrypoint.sh
similarity index 50%
copy from packages/serverless-logic-web-tools-swf-dev-mode-image/Containerfile
copy to packages/serverless-logic-web-tools-swf-dev-mode-image/entrypoint.sh
index e4d742a7937..97c40b91eca 100644
--- a/packages/serverless-logic-web-tools-swf-dev-mode-image/Containerfile
+++ b/packages/serverless-logic-web-tools-swf-dev-mode-image/entrypoint.sh
@@ -1,3 +1,5 @@
+#!/bin/bash
+#
 # Licensed to the Apache Software Foundation (ASF) under one
 # or more contributor license agreements.  See the NOTICE file
 # distributed with this work for additional information
@@ -6,7 +8,7 @@
 # "License"); you may not use this file except in compliance
 # with the License.  You may obtain a copy of the License at
 #
-#  http://www.apache.org/licenses/LICENSE-2.0
+#   http://www.apache.org/licenses/LICENSE-2.0
 #
 # Unless required by applicable law or agreed to in writing,
 # software distributed under the License is distributed on an
@@ -14,37 +16,18 @@
 # KIND, either express or implied.  See the License for the
 # specific language governing permissions and limitations
 # under the License.
+#
 
-ARG KOGITO_IMAGE_TAG
-
-FROM --platform=linux/amd64 docker.io/apache/incubator-kie-kogito-base-builder:$KOGITO_IMAGE_TAG
-
-ENV PATH="${PATH}:/usr/share/maven/bin"
-
-USER root
-RUN chown kogito /home/kogito/.m2
-USER kogito
-
-COPY --chown=kogito:root dist-dev/quarkus-app/ /home/kogito/serverless-logic-web-tools-swf-deployment-quarkus-app/
-COPY --chown=kogito:root dist-dev/quarkus-app-m2/ /home/kogito/.m2/repository
-
-WORKDIR /home/kogito/serverless-logic-web-tools-swf-deployment-quarkus-app/
-
-RUN rm -rf src/test/ && \
-  mvn clean package \
-  quarkus:go-offline \
-  -B \
-  -ntp \
-  -Dmaven.test.skip \
-  -Dquarkus-profiles=build,dev
+# Copying the assets here is essential for when the container is running with the readOnlyRootFilesystem flag.
+# But, just like any other directory modified during runtime, the /tmp/app must be a mounted volume in the container in this case.
+cp -R /home/kogito/* /tmp/app
 
-USER root
-RUN chmod -R 775 /home/kogito
-USER kogito
+cd /tmp/app/serverless-logic-web-tools-swf-deployment-quarkus-app
 
-ENTRYPOINT mvn quarkus:dev \
-  quarkus:go-offline \
+mvn quarkus:dev \
   -nsu \
+  -o \
+  -s /home/kogito/.m2/settings.xml \
   -Ddebug=false \
   -Dmaven.repo.local=/home/kogito/.m2/repository \
-  -Dquarkus.http.port=8080
+  -Dquarkus.http.port=8080
\ No newline at end of file
diff --git a/packages/serverless-logic-web-tools-swf-dev-mode-image/env/index.js b/packages/serverless-logic-web-tools-swf-dev-mode-image/env/index.js
index c8534689ed2..434d3870172 100644
--- a/packages/serverless-logic-web-tools-swf-dev-mode-image/env/index.js
+++ b/packages/serverless-logic-web-tools-swf-dev-mode-image/env/index.js
@@ -21,6 +21,10 @@ const { varsWithName, getOrDefault, composeEnv } = require("@kie-tools-scripts/b
 
 const rootEnv = require("@kie-tools/root-env/env");
 
+const {
+  env: { mavenM2RepoViaHttpImage: mavenM2RepoViaHttpImageEnv },
+} = require("@kie-tools/maven-m2-repo-via-http-image/env");
+
 module.exports = composeEnv([rootEnv, require("@kie-tools/serverless-logic-web-tools-swf-dev-mode-image-env/env")], {
   vars: varsWithName({
     /* (begin) This part of the file is referenced in `scripts/update-kogito-version` */
@@ -29,12 +33,21 @@ module.exports = composeEnv([rootEnv, require("@kie-tools/serverless-logic-web-t
       description: "",
     },
     /* end */
+    SERVERLESS_LOGIC_WEB_TOOLS_DEVMODE_IMAGE__mavenM2RepoViaHttpImage: {
+      default: `${mavenM2RepoViaHttpImageEnv.registry}/${mavenM2RepoViaHttpImageEnv.account}/${mavenM2RepoViaHttpImageEnv.name}:${mavenM2RepoViaHttpImageEnv.tag}`,
+      description: "The image tag for the Maven M2 Repo via HTTP. Used during the build only.",
+    },
   }),
   get env() {
     return {
       swfDevModeImage: {
         version: require("../package.json").version,
         kogitoImageTag: getOrDefault(this.vars.SERVERLESS_LOGIC_WEB_TOOLS_DEVMODE_IMAGE__kogitoBaseBuilderImageTag),
+        dev: {
+          mavenM2RepoViaHttpImage: getOrDefault(
+            this.vars.SERVERLESS_LOGIC_WEB_TOOLS_DEVMODE_IMAGE__mavenM2RepoViaHttpImage
+          ),
+        },
       },
     };
   },
diff --git a/packages/serverless-logic-web-tools-swf-dev-mode-image/package.json b/packages/serverless-logic-web-tools-swf-dev-mode-image/package.json
index 015a6353207..3fabe0a4645 100644
--- a/packages/serverless-logic-web-tools-swf-dev-mode-image/package.json
+++ b/packages/serverless-logic-web-tools-swf-dev-mode-image/package.json
@@ -13,20 +13,29 @@
     "url": "https://github.com/apache/incubator-kie-tools/issues"
   },
   "scripts": {
-    "build:dev": "echo Nothing to do",
-    "build:prod": "pnpm cleanup && run-script-os",
-    "build:prod:darwin:linux": "run-script-if --bool \"$(build-env containerImages.build)\" --then \"pnpm copy:assets\" \"pnpm image:docker:build\"",
-    "build:prod:win32": "echo \"Build not supported on Windows\"",
-    "cleanup": "rimraf dist-dev && mkdir dist-dev",
-    "copy:assets": "pnpm copy:quarkus-app && pnpm copy:sonataflow-deployment-webapp && pnpm copy:m2-for-sonataflow-quarkus-devui",
-    "copy:m2-for-sonataflow-quarkus-devui": "mvn dependency:copy-dependencies -Dmdep.useRepositoryLayout=true -Dmdep.copyPom=true -DexcludeTransitive=true -DoutputDirectory=./dist-dev/quarkus-app-m2",
-    "copy:quarkus-app": "cp -R ./node_modules/@kie-tools/serverless-logic-web-tools-swf-deployment-quarkus-app/ ./dist-dev/quarkus-app && mkdir -p ./dist-dev/quarkus-app/src/main/resources/META-INF/resources/ && rm -rf ./dist-dev/quarkus-app/node_modules ./dist-dev/quarkus-app/install.js ./dist-dev/quarkus-app/env ./dist-dev/quarkus-app/package.json",
-    "copy:sonataflow-deployment-webapp": "cp -R ./node_modules/sonataflow-deployment-webapp/dist/* ./dist-dev/quarkus-app/src/main/resources/META-INF/resources",
-    "image:docker:build": "run-script-if --bool $([ $(command -v docker) ] && echo true || echo false) --then \"docker build --ulimit nofile=5000:5000 $(echo $(build-env swfDevModeImageEnv.buildTag) | xargs printf -- \"-t $(build-env swfDevModeImageEnv.registry)/$(build-env swfDevModeImageEnv.account)/$(build-env swfDevModeImageEnv.name):%s\n\" | xargs echo) --build-arg KOGITO_IMAGE_TAG=$(build-env swfDevModeImage.kogitoImageTag) .\" --else \"echo Docker not found, skipping image build.\"",
-    "install": "node install.js"
+    "build": "run-script-if --bool \"$(build-env containerImages.build)\" --then \"pnpm m2-repo-via-http:container:run\" \"pnpm copy:assets\" \"pnpm image:docker:build\" --finally \"pnpm m2-repo-via-http:container:kill\"",
+    "build:dev": "pnpm build",
+    "build:prod": "pnpm build",
+    "copy:assets": "rimraf dist-dev && mkdir -p ./dist-dev && pnpm copy:quarkus-app && pnpm copy:sonataflow-deployment-webapp && pnpm copy:maven-m2-repo-via-http-image--settings-xml",
+    "copy:maven-m2-repo-via-http-image--settings-xml": "run-script-os",
+    "copy:maven-m2-repo-via-http-image--settings-xml:linux:darwin": "M2_REPO_VIA_HTTP_URL_WITHOUT_PROTOCOL=$(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' m2-repo-via-http) envsubst < ./node_modules/@kie-tools/maven-m2-repo-via-http-image/settings.xml.envsubst > dist-dev/settings.xml",
+    "copy:maven-m2-repo-via-http-image--settings-xml:win32": "pnpm powershell \"(Get-Content ./node_modules/@kie-tools/maven-m2-repo-via-http-image/settings.xml.envsubst) -replace '$M2_REPO_VIA_HTTP_URL_WITHOUT_PROTOCOL', $(docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' m2-repo-via-http) | Set-Content ./dist-dev/settings.xml\"",
+    "copy:quarkus-app": "run-script-os",
+    "copy:quarkus-app:linux:darwin": "cp -R ./node_modules/@kie-tools/serverless-logic-web-tools-swf-deployment-quarkus-app/ ./dist-dev/quarkus-app && mkdir -p ./dist-dev/quarkus-app/src/main/resources/META-INF/resources/ && rm -rf ./dist-dev/quarkus-app/node_modules ./dist-dev/quarkus-app/install.js ./dist-dev/quarkus-app/env ./dist-dev/quarkus-app/package.json",
+    "copy:quarkus-app:win32": "pnpm powershell \"New-Item -ItemType Directory -Force -Path ./dist-dev/quarkus-app; Copy-Item -R ./node_modules/@kie-tools/serverless-logic-web-tools-swf-deployment-quarkus-app/* ./dist-dev/quarkus-app -Exclude @('node_modules', 'install.js', 'package.json'); New-Item -ItemType Directory -Force -Path ./dist-dev/quarkus-app/src/main/resources/META-INF/resources \"",
+    "copy:sonataflow-deployment-webapp": "run-script-os",
+    "copy:sonataflow-deployment-webapp:linux:darwin": "cp -R ./node_modules/sonataflow-deployment-webapp/dist/* ./dist-dev/quarkus-app/src/main/resources/META-INF/resources",
+    "copy:sonataflow-deployment-webapp:win32": "pnpm powershell \"Copy-Item -R ./node_modules/sonataflow-deployment-webapp/dist/* ./dist-dev/quarkus-app/src/main/resources/META-INF/resources\"",
+    "image:docker:build": "kie-tools--image-builder build --allowHostNetworkAccess -r \"$(build-env swfDevModeImageEnv.registry)\" -a \"$(build-env swfDevModeImageEnv.account)\" -n \"$(build-env swfDevModeImageEnv.name)\" -t \"$(build-env swfDevModeImageEnv.buildTag)\" --build-arg KOGITO_IMAGE_TAG=\"$(build-env swfDevModeImage.kogitoImageTag)\"",
+    "install": "node install.js",
+    "m2-repo-via-http:container:kill": "(docker container kill m2-repo-via-http || true) && (docker container rm m2-repo-via-http || true)",
+    "m2-repo-via-http:container:run": "(pnpm m2-repo-via-http:container:kill || true) && docker run --name m2-repo-via-http -v \"$(mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout):/var/www/html\" -dit $(build-env swfDevModeImage.dev.mavenM2RepoViaHttpImage)",
+    "powershell": "@powershell -NoProfile -ExecutionPolicy Unrestricted -Command"
   },
   "devDependencies": {
+    "@kie-tools/image-builder": "workspace:*",
     "@kie-tools/maven-config-setup-helper": "workspace:*",
+    "@kie-tools/maven-m2-repo-via-http-image": "workspace:*",
     "@kie-tools/root-env": "workspace:*",
     "@kie-tools/serverless-logic-web-tools-swf-deployment-quarkus-app": "workspace:*",
     "@kie-tools/serverless-logic-web-tools-swf-dev-mode-image-env": "workspace:*",
diff --git a/packages/serverless-logic-web-tools-swf-dev-mode-image/pom.xml b/packages/serverless-logic-web-tools-swf-dev-mode-image/pom.xml
deleted file mode 100644
index ae9a454ff68..00000000000
--- a/packages/serverless-logic-web-tools-swf-dev-mode-image/pom.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" ?>
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~ 
-  ~   http://www.apache.org/licenses/LICENSE-2.0
-  ~ 
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.      
--->
-<project
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
-  xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
->
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.kie.kogito</groupId>
-  <artifactId>serverless-logic-web-tools-swf-deployment-quarkus-app-image</artifactId>
-  <version>${revision}</version>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.kie.sonataflow</groupId>
-      <artifactId>sonataflow-quarkus-devui-deployment</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.kie.sonataflow</groupId>
-      <artifactId>sonataflow-quarkus-devui</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.kie.sonataflow</groupId>
-      <artifactId>sonataflow-quarkus-devui-parent</artifactId>
-      <version>${project.version}</version>
-      <type>pom</type>
-    </dependency>
-    <dependency>
-      <groupId>org.kie</groupId>
-      <artifactId>kie-tools-maven-base</artifactId>
-      <version>${project.version}</version>
-      <type>pom</type>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/packages/serverless-logic-web-tools/src/openshift/pipelines/SpinUpDevModePipeline.ts b/packages/serverless-logic-web-tools/src/openshift/pipelines/SpinUpDevModePipeline.ts
index 995c6305697..c6af69a9842 100644
--- a/packages/serverless-logic-web-tools/src/openshift/pipelines/SpinUpDevModePipeline.ts
+++ b/packages/serverless-logic-web-tools/src/openshift/pipelines/SpinUpDevModePipeline.ts
@@ -197,6 +197,12 @@ export class SpinUpDevModePipeline extends OpenShiftPipeline<SpinUpDevModePipeli
               },
             },
             spec: {
+              volumes: [
+                {
+                  name: `${resourceArgs.resourceName}-volume`,
+                  emptyDir: {},
+                },
+              ],
               containers: [
                 {
                   name: resourceArgs.resourceName,
@@ -207,6 +213,17 @@ export class SpinUpDevModePipeline extends OpenShiftPipeline<SpinUpDevModePipeli
                       protocol: "TCP",
                     },
                   ],
+                  resources: {
+                    limits: {
+                      memory: "4096Mi",
+                    },
+                  },
+                  volumeMounts: [
+                    {
+                      mountPath: "/tmp/app",
+                      name: `${resourceArgs.resourceName}-volume`,
+                    },
+                  ],
                   env: [
                     { name: DeployConstants.KOGITO_DATA_INDEX_URL_KEY, value: routeUrl },
                     { name: DeployConstants.KOGITO_DEV_UI_URL_KEY, value: routeUrl },
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 1e9a12b236c..17ce344b215 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -9376,9 +9376,15 @@ importers:
 
   packages/serverless-logic-web-tools-swf-dev-mode-image:
     devDependencies:
+      '@kie-tools/image-builder':
+        specifier: workspace:*
+        version: link:../image-builder
       '@kie-tools/maven-config-setup-helper':
         specifier: workspace:*
         version: link:../maven-config-setup-helper
+      '@kie-tools/maven-m2-repo-via-http-image':
+        specifier: workspace:*
+        version: link:../maven-m2-repo-via-http-image
       '@kie-tools/root-env':
         specifier: workspace:*
         version: link:../root-env
diff --git a/repo/graph.dot b/repo/graph.dot
index fbfb7d726f5..86e01d4f171 100644
--- a/repo/graph.dot
+++ b/repo/graph.dot
@@ -526,6 +526,7 @@ digraph G {
   "@kie-tools/serverless-logic-web-tools-swf-builder-image" -> "sonataflow-deployment-webapp" [ style = "dashed", color = "black" ];
   "@kie-tools/serverless-logic-web-tools-swf-builder-image-env" -> "@kie-tools/root-env" [ style = "dashed", color = "black" ];
   "@kie-tools/serverless-logic-web-tools-swf-deployment-quarkus-app" -> "@kie-tools/sonataflow-quarkus-devui" [ style = "solid", color = "black" ];
+  "@kie-tools/serverless-logic-web-tools-swf-dev-mode-image" -> "@kie-tools/maven-m2-repo-via-http-image" [ style = "dashed", color = "black" ];
   "@kie-tools/serverless-logic-web-tools-swf-dev-mode-image" -> "@kie-tools/serverless-logic-web-tools-swf-deployment-quarkus-app" [ style = "dashed", color = "black" ];
   "@kie-tools/serverless-logic-web-tools-swf-dev-mode-image" -> "@kie-tools/serverless-logic-web-tools-swf-dev-mode-image-env" [ style = "dashed", color = "black" ];
   "@kie-tools/serverless-logic-web-tools-swf-dev-mode-image" -> "sonataflow-deployment-webapp" [ style = "dashed", color = "black" ];
diff --git a/repo/graph.json b/repo/graph.json
index ac0da5d0af0..b6a737c3de7 100644
--- a/repo/graph.json
+++ b/repo/graph.json
@@ -2256,6 +2256,11 @@
         "target": "@kie-tools/sonataflow-quarkus-devui",
         "weight": 1
       },
+      {
+        "source": "@kie-tools/serverless-logic-web-tools-swf-dev-mode-image",
+        "target": "@kie-tools/maven-m2-repo-via-http-image",
+        "weight": 1
+      },
       {
         "source": "@kie-tools/serverless-logic-web-tools-swf-dev-mode-image",
         "target": "@kie-tools/serverless-logic-web-tools-swf-deployment-quarkus-app",


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@kie.apache.org
For additional commands, e-mail: commits-help@kie.apache.org