#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" DIST_DIR="$PROJECT_ROOT/dist" cd "$PROJECT_ROOT" echo "========================================" echo " RedisClipSync - Build Slave Release" echo "========================================" echo echo "[1/4] Packaging application jar..." mvn -f code/pom.xml -q clean package -DskipTests VERSION="$(mvn -f code/pom.xml -q -DforceStdout help:evaluate -Dexpression=project.version)" VERSION="${VERSION##*$'\n'}" PACKAGE_NAME="redis-clip-sync-slave-${VERSION}" STAGE_DIR="$DIST_DIR/$PACKAGE_NAME" ARCHIVE_PATH="$DIST_DIR/${PACKAGE_NAME}.tar.gz" echo "[2/4] Preparing release directory..." rm -rf "$STAGE_DIR" mkdir -p "$STAGE_DIR" mkdir -p "$STAGE_DIR/bin" "$STAGE_DIR/lib" "$STAGE_DIR/conf" "$STAGE_DIR/systemd" "$STAGE_DIR/logs" "$STAGE_DIR/run" cp "$PROJECT_ROOT/code/target/redis-clip-sync.jar" "$STAGE_DIR/lib/redis-clip-sync.jar" cp "$PROJECT_ROOT/config.slave.properties.example" "$STAGE_DIR/conf/config.properties" cp "$PROJECT_ROOT/linux/slave-package/bin/start.sh" "$STAGE_DIR/bin/start.sh" cp "$PROJECT_ROOT/linux/slave-package/bin/stop.sh" "$STAGE_DIR/bin/stop.sh" cp "$PROJECT_ROOT/linux/slave-package/bin/status.sh" "$STAGE_DIR/bin/status.sh" cp "$PROJECT_ROOT/linux/slave-package/bin/logs.sh" "$STAGE_DIR/bin/logs.sh" cp "$PROJECT_ROOT/linux/slave-package/bin/install-slave.sh" "$STAGE_DIR/bin/install-slave.sh" cp "$PROJECT_ROOT/linux/slave-package/systemd/redis-clip-sync.service.tpl" "$STAGE_DIR/systemd/redis-clip-sync.service.tpl" chmod +x "$STAGE_DIR/bin/start.sh" "$STAGE_DIR/bin/stop.sh" "$STAGE_DIR/bin/status.sh" "$STAGE_DIR/bin/logs.sh" "$STAGE_DIR/bin/install-slave.sh" cat > "$STAGE_DIR/README_DEPLOY.md" <<'EOF' # Slave Deploy Quick Start 1. Edit `conf/config.properties`. 2. Install and enable startup service: ```bash sudo ./bin/install-slave.sh ``` 3. Check service status: ```bash systemctl status redis-clip-sync ``` EOF echo "[3/4] Creating tar.gz archive..." mkdir -p "$DIST_DIR" tar -czf "$ARCHIVE_PATH" -C "$DIST_DIR" "$PACKAGE_NAME" echo "[4/4] Done" echo "Release directory: $STAGE_DIR" echo "Release archive: $ARCHIVE_PATH"