From 855ca0799f2881d70b8ce45f7cc421bb001a244a Mon Sep 17 00:00:00 2001 From: Onkar Saravade Date: Mon, 30 Mar 2026 18:54:17 +0530 Subject: [PATCH 1/4] Add .odin/SimpleSpringBootApplication/post-deploy.sh --- .odin/SimpleSpringBootApplication/post-deploy.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .odin/SimpleSpringBootApplication/post-deploy.sh diff --git a/.odin/SimpleSpringBootApplication/post-deploy.sh b/.odin/SimpleSpringBootApplication/post-deploy.sh new file mode 100644 index 0000000..4d6ae1c --- /dev/null +++ b/.odin/SimpleSpringBootApplication/post-deploy.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env sh +set -e + +echo "Running post-deploy..." +echo "ODIN_APP_DIR: ${ODIN_APP_DIR}" +echo "ODIN_DEPLOYMENT_TYPE: ${ODIN_DEPLOYMENT_TYPE}" + +# Add post-deployment tasks here (e.g., smoke tests, seed data) + +echo "Post-deploy completed successfully" From 8b674eb7323ca310464f9c8ea19e11a3c58add78 Mon Sep 17 00:00:00 2001 From: Onkar Saravade Date: Mon, 30 Mar 2026 18:54:18 +0530 Subject: [PATCH 2/4] Add .odin/SimpleSpringBootApplication/pre-deploy.sh --- .odin/SimpleSpringBootApplication/pre-deploy.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .odin/SimpleSpringBootApplication/pre-deploy.sh diff --git a/.odin/SimpleSpringBootApplication/pre-deploy.sh b/.odin/SimpleSpringBootApplication/pre-deploy.sh new file mode 100644 index 0000000..19bef8d --- /dev/null +++ b/.odin/SimpleSpringBootApplication/pre-deploy.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env sh +set -e + +echo "Running pre-deploy..." +echo "ODIN_APP_DIR: ${ODIN_APP_DIR}" +echo "ODIN_DEPLOYMENT_TYPE: ${ODIN_DEPLOYMENT_TYPE}" + +# Add pre-deployment tasks here (e.g., database migrations) + +echo "Pre-deploy completed successfully" From 44f5efbb94a354edf2d4c5e515cd87ffcad9752f Mon Sep 17 00:00:00 2001 From: Onkar Saravade Date: Mon, 30 Mar 2026 18:54:19 +0530 Subject: [PATCH 3/4] Add .odin/SimpleSpringBootApplication/setup.sh --- .odin/SimpleSpringBootApplication/setup.sh | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .odin/SimpleSpringBootApplication/setup.sh diff --git a/.odin/SimpleSpringBootApplication/setup.sh b/.odin/SimpleSpringBootApplication/setup.sh new file mode 100644 index 0000000..f9df0a0 --- /dev/null +++ b/.odin/SimpleSpringBootApplication/setup.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env sh +set -e + +echo "Running setup..." +echo "ODIN_APP_DIR: ${ODIN_APP_DIR}" +echo "ODIN_DEPLOYMENT_TYPE: ${ODIN_DEPLOYMENT_TYPE}" + +# Add any image setup tasks here (e.g., install additional software) + +echo "Setup completed successfully" From c4c6ac59db8680ea627710c84a01b39800505919 Mon Sep 17 00:00:00 2001 From: Onkar Saravade Date: Mon, 30 Mar 2026 18:54:21 +0530 Subject: [PATCH 4/4] Add .odin/SimpleSpringBootApplication/start.sh --- .odin/SimpleSpringBootApplication/start.sh | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 .odin/SimpleSpringBootApplication/start.sh diff --git a/.odin/SimpleSpringBootApplication/start.sh b/.odin/SimpleSpringBootApplication/start.sh new file mode 100644 index 0000000..3b56fbc --- /dev/null +++ b/.odin/SimpleSpringBootApplication/start.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env sh +set -e + +echo "Starting SimpleSpringBootApplication..." +echo "ODIN_APP_DIR: ${ODIN_APP_DIR}" +echo "ODIN_DEPLOYMENT_TYPE: ${ODIN_DEPLOYMENT_TYPE}" +echo "ODIN_SERVICE_NAME: ${ODIN_SERVICE_NAME}" +echo "ODIN_ARTIFACT_VERSION: ${ODIN_ARTIFACT_VERSION}" + +cd "${ODIN_APP_DIR}" || exit + +# ── Artifact resolution ────────────────────────────────────────────── + +ARTIFACT="${ODIN_SERVICE_NAME}-${ODIN_ARTIFACT_VERSION}.jar" + + +# ── JVM memory tuning (70% of available RAM for heap) ──────────────── +if [ -f /sys/fs/cgroup/memory.max ]; then + TOTAL_MEM_KB=$(awk '{printf "%.0f", $1/1024}' /sys/fs/cgroup/memory.max 2>/dev/null || true) +elif [ -f /sys/fs/cgroup/memory/memory.limit_in_bytes ]; then + TOTAL_MEM_KB=$(awk '{printf "%.0f", $1/1024}' /sys/fs/cgroup/memory/memory.limit_in_bytes 2>/dev/null || true) +else + TOTAL_MEM_KB=$(awk '/MemTotal/ {print $2}' /proc/meminfo 2>/dev/null || true) +fi + +if [ -n "${TOTAL_MEM_KB}" ] && [ "${TOTAL_MEM_KB}" -gt 0 ] 2>/dev/null; then + HEAP_MB=$(( TOTAL_MEM_KB * 70 / 100 / 1024 )) + MEM_OPTS="-Xms${HEAP_MB}m -Xmx${HEAP_MB}m" +else + MEM_OPTS="-Xms512m -Xmx512m" +fi + +# ── JVM options ────────────────────────────────────────────────────── +JAVA_OPTS="${JAVA_OPTS:-}" +JAVA_OPTS="${JAVA_OPTS} ${MEM_OPTS}" +JAVA_OPTS="${JAVA_OPTS} -XX:+HeapDumpOnOutOfMemoryError" +JAVA_OPTS="${JAVA_OPTS} -XX:HeapDumpPath=/opt/logs/SimpleSpringBootApplication-heapdump.hprof" +JAVA_OPTS="${JAVA_OPTS} -XX:+UseG1GC" + +# JMX monitoring (enabled only on VMs) +case "${ODIN_DEPLOYMENT_TYPE}" in + *container*|*k8s*) ;; + *) + JAVA_OPTS="${JAVA_OPTS} -Dcom.sun.management.jmxremote" + JAVA_OPTS="${JAVA_OPTS} -Dcom.sun.management.jmxremote.port=9010" + JAVA_OPTS="${JAVA_OPTS} -Dcom.sun.management.jmxremote.authenticate=false" + JAVA_OPTS="${JAVA_OPTS} -Dcom.sun.management.jmxremote.ssl=false" + ;; +esac + +export JAVA_OPTS + +# ── Launch ─────────────────────────────────────────────────────────── +case "${ODIN_DEPLOYMENT_TYPE}" in + *container*|*k8s*) + exec java ${JAVA_OPTS} -jar "${ODIN_APP_DIR}/${ARTIFACT}" + ;; + *) + nohup java ${JAVA_OPTS} -jar "${ODIN_APP_DIR}/${ARTIFACT}" > /opt/logs/SimpleSpringBootApplication.log 2>&1 & + echo $! > "${ODIN_APP_DIR}/.app.pid" + ;; +esac