#!/bin/bash # LokiDeploy Build Script # Builds frontend and backend into a single deployable package set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" echo "========================================" echo " LokiDeploy Build Script" echo "========================================" # 1. Build Frontend echo "[1/2] Building frontend..." cd "$SCRIPT_DIR/frontend" if [ ! -d "node_modules" ]; then echo " Installing dependencies..." npm ci fi npm run build echo " Frontend built: frontend/dist/" # 2. Build Backend echo "[2/2] Building backend..." cd "$SCRIPT_DIR/backend" # Detect Go if command -v go &> /dev/null; then GO_CMD="go" elif [ -f "$HOME/go/bin/go" ]; then GO_CMD="$HOME/go/bin/go" else echo "ERROR: Go not found. Please install Go 1.23+" echo " wget https://go.dev/dl/go1.23.4.linux-amd64.tar.gz" echo " tar -C $HOME -xzf go1.23.4.linux-amd64.tar.gz" echo " export PATH=\$HOME/go/bin:\$PATH" exit 1 fi export CGO_ENABLED=0 export GOPROXY=https://goproxy.cn,direct $GO_CMD build -ldflags="-s -w" -o bin/lokideploy . echo " Backend built: bin/lokideploy" # 3. Copy dist to backend for embedded serving cd "$SCRIPT_DIR" rm -rf backend/dist cp -r frontend/dist backend/dist # 4. Summary echo "" echo "========================================" echo " Build Complete!" echo "========================================" echo " Frontend: backend/dist/" echo " Backend: backend/bin/lokideploy" echo " Size: $(du -h backend/bin/lokideploy | cut -f1)" echo "" echo " Start with: ./run.sh" echo "========================================"