Add self-contained runtime bundle distribution (jlink) for hosts without Java

./gradlew runtimeBundle packs a jlink-trimmed JRE, gittally.jar, and a
launcher script into one tarball, unpacked to ~/opt/gittally on the target
host; init --systemd works from the bundle unchanged because java.home and
the running-jar path resolve into it. Chosen over a GraalVM native image
(Spring AOT evaluates bean conditions at build time, which cannot represent
the dual-context CLI/server wiring) and over a containerized runtime — see
ADR 0006 and docs/plan/15-runtime-bundle-distribution.md, which also records
the full vm2176-to-vm4006 migration walkthrough.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-10 15:35:35 +02:00
co-authored by Claude Fable 5
parent 8b71d0db8e
commit 9e7982ce34
9 changed files with 308 additions and 12 deletions
+6
View File
@@ -0,0 +1,6 @@
#!/bin/sh
# Launcher for the self-contained GitTally runtime bundle (jlink JRE + jar).
# Built by `./gradlew runtimeBundle`; see docs/deployment.md.
DIR=$(CDPATH='' cd -- "$(dirname -- "$(readlink -f -- "$0")")" && pwd)
# shellcheck disable=SC2086 # JAVA_OPTS is intentionally word-split
exec "$DIR/../jre/bin/java" $JAVA_OPTS -jar "$DIR/../lib/gittally.jar" "$@"