From 23a12c83b252e5bece942fdba6cc12d2c00051ff Mon Sep 17 00:00:00 2001 From: Roy Golan Date: Wed, 28 Feb 2024 22:14:38 +0200 Subject: [PATCH] WIP: swf-builder generate manifests using kn-workflow Generate manifests and save them in the runtime image. Generating manifests is an opt-in as part of the build ran by /launch/build-app.sh When setting GEN_MANIFESTS=true during container build the build-app.sh script will call a new generate-manifests.sh script that will use _kn-workflow_ cli and will store the manifests under $KOGITO_HOME/build/manifests Later in the runtime image user can copy and store those manifests for later use: COPY --from=builder --chown=185 /home/kogito/build/manifests /deployments/manifests The manifests can be extracted for example by echoing them from the image: podman run builder:latest cat /deployment/manifests/* > manifests-all.yaml or by podman cp: podman cp $(podman create builder:latest):/deployment/manifests . Signed-off-by: Roy Golan --- kogito-swf-builder-image.yaml | 1 + .../common/scripts/added/build-app.sh | 2 ++ .../added/generate-manifests.sh | 11 +++++++ modules/kogito-workflow-manifests/configure | 31 +++++++++++++++++++ modules/kogito-workflow-manifests/install.sh | 29 +++++++++++++++++ modules/kogito-workflow-manifests/module.yaml | 30 ++++++++++++++++++ 6 files changed, 104 insertions(+) create mode 100644 modules/kogito-workflow-manifests/added/generate-manifests.sh create mode 100644 modules/kogito-workflow-manifests/configure create mode 100644 modules/kogito-workflow-manifests/install.sh create mode 100644 modules/kogito-workflow-manifests/module.yaml diff --git a/kogito-swf-builder-image.yaml b/kogito-swf-builder-image.yaml index 5749630e2..fb61ddb84 100644 --- a/kogito-swf-builder-image.yaml +++ b/kogito-swf-builder-image.yaml @@ -68,6 +68,7 @@ - name: org.kie.kogito.project.versions - name: org.kie.kogito.swf.common.scripts - name: org.kie.kogito.swf.builder.runtime.community + - name: org.kie.kogito.workflow-manifests run: workdir: "/home/kogito/${PROJECT_ARTIFACT_ID}" diff --git a/modules/kogito-swf/common/scripts/added/build-app.sh b/modules/kogito-swf/common/scripts/added/build-app.sh index c85927c4b..2158d7982 100755 --- a/modules/kogito-swf/common/scripts/added/build-app.sh +++ b/modules/kogito-swf/common/scripts/added/build-app.sh @@ -62,3 +62,5 @@ cd ${KOGITO_HOME}/serverless-workflow-project -DskipTests \ -Dquarkus.container-image.build=false \ clean install + +"${script_dir_path}"/generate-manifests.sh "${resources_path}" diff --git a/modules/kogito-workflow-manifests/added/generate-manifests.sh b/modules/kogito-workflow-manifests/added/generate-manifests.sh new file mode 100644 index 000000000..3c8e1665f --- /dev/null +++ b/modules/kogito-workflow-manifests/added/generate-manifests.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +resource_dir="${1:-${KOGITO_HOME}/serverless-workflow-project/src/main/resources}" +target_dir="${KOGITO_HOME}/build/manifests" +if [ "${GEN_MANIFESTS}" = "true" ]; then + # kn-workflow doesn't support source dir yet, we have to get in + pushd "${resource_dir}" || exit + $KN_CLI gen-manifests --custom-generated-manifests-dir "${target_dir}" + popd || exit +fi + diff --git a/modules/kogito-workflow-manifests/configure b/modules/kogito-workflow-manifests/configure new file mode 100644 index 000000000..099b22309 --- /dev/null +++ b/modules/kogito-workflow-manifests/configure @@ -0,0 +1,31 @@ +#!/usr/bin/env 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 +# 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. +# +# +set -x + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +INSTALL_DIR=/usr/local/bin +curl -L https://github.com/rgolangh/kie-tools/releases/download/0.0.2/kn-workflow-linux-amd64 -o "${INSTALL_DIR}"/kn-workflow +chmod +x-w "${INSTALL_DIR}"/kn-workflow + +cp -v "${SCRIPT_DIR}"/added/* "${KOGITO_HOME}"/launch + +chown -R 1001:0 "${KOGITO_HOME}"/launch +chmod -R ug+rwX "${KOGITO_HOME}"/launch diff --git a/modules/kogito-workflow-manifests/install.sh b/modules/kogito-workflow-manifests/install.sh new file mode 100644 index 000000000..1ead38ba7 --- /dev/null +++ b/modules/kogito-workflow-manifests/install.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env 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 +# 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. +# +# +set -x + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +ADDED_DIR="${SCRIPT_DIR}"/added +LAUNCH_DIR="${KOGITO_HOME}"/launch +KN_HOME=/usr/local/bin +curl -L https://github.com/rgolangh/kie-tools/releases/download/0.0.2/kn-workflow-linux-amd64 -o "${KN_HOME}"/kn-workflow +chmod +x-w "${KN_HOME}"/kn-workflow +cp "${ADDED_DIR}"/generate-manifests.sh "${LAUNCH_DIR}" diff --git a/modules/kogito-workflow-manifests/module.yaml b/modules/kogito-workflow-manifests/module.yaml new file mode 100644 index 000000000..1234645b0 --- /dev/null +++ b/modules/kogito-workflow-manifests/module.yaml @@ -0,0 +1,30 @@ +# +# 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. +# +schema_version: 1 +name: org.kie.kogito.workflow-manifests +version: "999-SNAPSHOT" +description: Module to install kn-workflow tool and scripts +execute: + - script: configure +envs: + - name: KN_CLI + value: /usr/local/bin/kn-workflow + - name: GEN_MANIFESTS + value: false +