From 3d508868c8e8837a101667aa0d156b182ac22912 Mon Sep 17 00:00:00 2001 From: M_Kececi Date: Tue, 17 Feb 2026 14:11:28 +0300 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- deploy/deploy.sh | 61 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/deploy/deploy.sh b/deploy/deploy.sh index dccb423..415b287 100644 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -10,6 +10,41 @@ export FORCE_COLOR="0" LOG_FILE="/var/log/bssapp_deploy.log" APP_DIR="/opt/bssapp" LOCK_FILE="/tmp/bssapp_deploy.lock" +RUNTIME_BACKUP_DIR="" +RUNTIME_PRESERVE_FILES=( + ".env" + "mail.env" + "svc/.env" + "svc/mail.env" + "svc/fonts" + "svc/public" +) + +backup_runtime_files() { + RUNTIME_BACKUP_DIR="$(mktemp -d /tmp/bssapp-runtime.XXXXXX)" + + for rel in "${RUNTIME_PRESERVE_FILES[@]}"; do + src="$APP_DIR/$rel" + dst="$RUNTIME_BACKUP_DIR/$rel" + + if [[ -e "$src" ]]; then + mkdir -p "$(dirname "$dst")" + cp -a "$src" "$dst" + fi + done +} + +restore_runtime_files() { + [[ -n "$RUNTIME_BACKUP_DIR" && -d "$RUNTIME_BACKUP_DIR" ]] || return 0 + find "$RUNTIME_BACKUP_DIR" -mindepth 1 -print -quit | grep -q . || return 0 + cp -a "$RUNTIME_BACKUP_DIR/." "$APP_DIR/" +} + +cleanup_runtime_backup() { + if [[ -n "$RUNTIME_BACKUP_DIR" && -d "$RUNTIME_BACKUP_DIR" ]]; then + rm -rf "$RUNTIME_BACKUP_DIR" + fi +} ensure_runtime_env_files() { # Bazı unit dosyaları EnvironmentFile olarak bu path'leri bekliyor. @@ -20,6 +55,25 @@ ensure_runtime_env_files() { [[ -f "$APP_DIR/svc/mail.env" ]] || touch "$APP_DIR/svc/mail.env" } +ensure_pdf_fonts() { + font_dir="$APP_DIR/svc/fonts" + sys_font_dir="/usr/share/fonts/truetype/dejavu" + + mkdir -p "$font_dir" + + if [[ ! -f "$font_dir/DejaVuSans.ttf" && -f "$sys_font_dir/DejaVuSans.ttf" ]]; then + cp -a "$sys_font_dir/DejaVuSans.ttf" "$font_dir/DejaVuSans.ttf" + fi + if [[ ! -f "$font_dir/DejaVuSans-Bold.ttf" && -f "$sys_font_dir/DejaVuSans-Bold.ttf" ]]; then + cp -a "$sys_font_dir/DejaVuSans-Bold.ttf" "$font_dir/DejaVuSans-Bold.ttf" + fi + + if [[ ! -f "$font_dir/DejaVuSans.ttf" || ! -f "$font_dir/DejaVuSans-Bold.ttf" ]]; then + echo "ERROR: Required PDF fonts missing in $font_dir (DejaVuSans.ttf / DejaVuSans-Bold.ttf)" + return 1 + fi +} + build_api_binary() { if ! command -v go >/dev/null 2>&1; then echo "go command not found; cannot build backend binary." @@ -37,6 +91,8 @@ build_api_binary() { } run_deploy() { + trap cleanup_runtime_backup EXIT + exec 9>"$LOCK_FILE" if ! flock -n 9; then echo "[$(date '+%F %T')] Deploy already running. Skipping new request." @@ -50,9 +106,11 @@ run_deploy() { cd "$APP_DIR" echo "== GIT SYNC ==" + backup_runtime_files git fetch origin git reset --hard origin/master git clean -fdx -e .env -e mail.env -e svc/.env -e svc/mail.env -e svc/bssapp + restore_runtime_files echo "== BUILD UI ==" cd "$APP_DIR/ui" @@ -70,6 +128,9 @@ run_deploy() { echo "== ENSURE ENV FILES ==" ensure_runtime_env_files + echo "== ENSURE PDF FONTS ==" + ensure_pdf_fonts + echo "== RESTART SERVICE ==" systemctl restart bssapp