#!/usr/bin/env bash # Redeploy Ledgerline on the server: pull the latest code and (re)start the # stack behind Traefik. Run from your own machine: # # ./deploy.sh # # Override the target with env vars, e.g. DEPLOY_HOST=other ./deploy.sh set -euo pipefail DEPLOY_HOST="${DEPLOY_HOST:-czy}" DEPLOY_DIR="${DEPLOY_DIR:-/opt/apps/LedgerLine}" # Always both files: the base file alone would publish every service port. COMPOSE="docker compose -f docker-compose.yml -f docker-compose.traefik.yml" # The server pulls from the remote, so unpushed commits would not be deployed. if [ -n "$(git log '@{u}..HEAD' --oneline 2>/dev/null)" ]; then echo "warning: local commits are not pushed; the server will not see them" >&2 fi # DEPLOY_HASH is the server's HEAD *after* the pull -- the code actually # running -- and becomes service.version on every span (docker-compose.yml). # Escaped so it is evaluated on the server, not here. ssh "$DEPLOY_HOST" "cd '$DEPLOY_DIR' && git pull --ff-only \ && export DEPLOY_HASH=\$(git rev-parse --short HEAD) \ && echo \"deploying \$DEPLOY_HASH\" \ && $COMPOSE up -d --build && $COMPOSE ps"