#!/usr/bin/env bash # ============================================================ # WBX Spring Core — Linux/macOS 설치 스크립트 # 사용법: chmod +x scripts/install.sh && ./scripts/install.sh # ============================================================ set -euo pipefail # ---------- 색상 ---------- RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; CYAN='\033[0;36m'; NC='\033[0m' ok() { echo -e " ${GREEN}[OK]${NC} $1"; } warn() { echo -e " ${YELLOW}[WARN]${NC} $1"; } fail() { echo -e " ${RED}[FAIL]${NC} $1"; } info() { echo -e " ${CYAN}[INFO]${NC} $1"; } ERRORS=0 echo "" echo "==========================================" echo " WBX Spring Core — 설치 점검" echo "==========================================" echo "" # ---------- 1. JDK 21 ---------- echo "1. JDK 확인" if command -v java &>/dev/null; then JAVA_VER=$(java -version 2>&1 | head -1 | awk -F '"' '{print $2}' | cut -d. -f1) if [ "$JAVA_VER" -ge 21 ] 2>/dev/null; then ok "JDK $JAVA_VER" else fail "JDK $JAVA_VER (21 이상 필요)" ERRORS=$((ERRORS + 1)) fi else fail "java 명령어 없음 — JDK 21 설치 필요" ERRORS=$((ERRORS + 1)) fi # ---------- 2. Git ---------- echo "2. Git 확인" if command -v git &>/dev/null; then ok "$(git --version)" else fail "git 없음" ERRORS=$((ERRORS + 1)) fi # ---------- 3. Docker (선택) ---------- echo "3. Docker 확인 (선택)" if command -v docker &>/dev/null; then ok "$(docker --version | head -1)" else warn "Docker 미설치 — DB/Redis를 직접 설치해야 합니다" fi # ---------- 4. 빌드 ---------- echo "4. Gradle 빌드" if [ $ERRORS -gt 0 ]; then fail "사전 요구사항 미충족 — 빌드 건너뜀" else chmod +x gradlew if ./gradlew build -x test --console=plain -q; then ok "BUILD SUCCESSFUL" else fail "빌드 실패" ERRORS=$((ERRORS + 1)) fi fi # ---------- 5. .env 템플릿 ---------- echo "5. 환경변수 파일" if [ ! -f .env ]; then cat > .env << 'ENVEOF' # ===== WBX Spring Core — 환경변수 ===== # 이 파일을 환경에 맞게 수정하세요. # --- 프로필 --- SPRING_PROFILES_ACTIVE=prod,mysql # --- 서버 --- SERVER_CONTEXT_PATH=/ # --- JWT (필수 변경!) --- JWT_SECRET=your-production-secret-key-minimum-256-bits-long # --- DB --- DB_HOST=localhost DB_PORT=3306 DB_NAME=wbx_spring DB_USER=wbxapp DB_PASS=StrongP@ss # --- Redis --- SPRING_DATA_REDIS_HOST=localhost # --- CORS --- CORS_ORIGINS=https://app.company.com # --- 로그 경로 --- LOG_PATH=/opt/wbx-app/logs/app.log # --- Azure SSO (azure 프로필 사용 시) --- # AZURE_CLIENT_ID= # AZURE_CLIENT_SECRET= # AZURE_TENANT_ID= # --- Azure Blob Storage --- # AZURE_STORAGE_ACCOUNT= # AZURE_STORAGE_KEY= # AZURE_CONTAINER=uploads # --- AWS Cognito (aws 프로필 사용 시) --- # AWS_COGNITO_CLIENT_ID= # AWS_COGNITO_CLIENT_SECRET= # AWS_USER_POOL_ID= # AWS_REGION=ap-northeast-2 # --- AWS S3 --- # AWS_S3_BUCKET= # AWS_ACCESS_KEY= # AWS_SECRET_KEY= ENVEOF chmod 600 .env ok ".env 생성 완료 (값을 수정하세요)" else warn ".env 이미 존재 — 건너뜀" fi # ---------- 6. 디렉토리 ---------- echo "6. 디렉토리 생성" mkdir -p logs uploads backup ok "logs/ uploads/ backup/" # ---------- 결과 ---------- echo "" echo "==========================================" if [ $ERRORS -eq 0 ]; then echo -e " ${GREEN}설치 점검 완료${NC}" echo "" echo " 다음 단계:" echo " 1. .env 파일을 환경에 맞게 수정" echo " 2. DB 생성 (또는 docker compose -f docker-compose-dev.yml up -d)" echo " 3. ./gradlew bootRun" echo " 4. http://localhost:8080/health 확인" else echo -e " ${RED}오류 ${ERRORS}건 — 위의 [FAIL] 항목을 해결하세요${NC}" fi echo "==========================================" echo ""