#!/bin/bash # =================================================================== # TK Factory Services - 배포 상태 확인 (맥북에서 실행) # =================================================================== # 사용법: ./scripts/check-version.sh # 설정: ~/.tk-deploy-config # =================================================================== SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" CONFIG_FILE="$HOME/.tk-deploy-config" RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' CYAN='\033[0;36m' NC='\033[0m' # === 설정 로드 === if [ ! -f "$CONFIG_FILE" ]; then echo -e "${RED}ERROR: 설정 파일이 없습니다: $CONFIG_FILE${NC}" exit 1 fi source "$CONFIG_FILE" DOCKER="/usr/local/bin/docker" ssh_cmd() { ssh -o ConnectTimeout=10 "${NAS_USER}@${NAS_HOST}" "$@" } # === NAS 배포 버전 확인 === echo "=== TK Factory Services - 배포 상태 ===" echo "" echo -e "${CYAN}[NAS 배포 버전]${NC}" NAS_INFO=$(ssh_cmd "cd ${NAS_DEPLOY_PATH} && git log -1 --format='%H|%s|%ci'" 2>/dev/null || echo "") if [ -z "$NAS_INFO" ]; then echo -e " ${RED}NAS에서 git 정보를 가져올 수 없습니다${NC}" exit 1 fi NAS_HASH=$(echo "$NAS_INFO" | cut -d'|' -f1) NAS_MSG=$(echo "$NAS_INFO" | cut -d'|' -f2) NAS_DATE=$(echo "$NAS_INFO" | cut -d'|' -f3) NAS_SHORT="${NAS_HASH:0:7}" echo " 커밋: ${NAS_SHORT} - ${NAS_MSG}" echo " 날짜: ${NAS_DATE}" # === origin/main 대비 상태 === echo "" echo -e "${CYAN}[origin/main 대비]${NC}" cd "$PROJECT_DIR" git fetch origin --quiet LOCAL_BRANCH=$(git rev-parse --abbrev-ref HEAD) ORIGIN_HASH=$(git rev-parse "origin/${LOCAL_BRANCH}" 2>/dev/null || echo "") if [ -n "$ORIGIN_HASH" ]; then if [ "$NAS_HASH" = "$ORIGIN_HASH" ]; then echo -e " ${GREEN}최신 상태${NC} (origin/${LOCAL_BRANCH}과 동일)" else BEHIND_COUNT=$(git log "${NAS_HASH}..${ORIGIN_HASH}" --oneline 2>/dev/null | wc -l | tr -d ' ') if [ "$BEHIND_COUNT" -gt 0 ]; then echo -e " ${YELLOW}${BEHIND_COUNT}개 커밋 뒤처짐${NC}" echo "" echo " 미배포 커밋:" git log "${NAS_HASH}..${ORIGIN_HASH}" --oneline --no-decorate | sed 's/^/ /' else echo -e " ${YELLOW}NAS가 origin보다 앞서 있거나 브랜치가 다릅니다${NC}" fi fi fi # === Docker 컨테이너 상태 === echo "" echo -e "${CYAN}[Docker 컨테이너 상태]${NC}" ssh_cmd "cd ${NAS_DEPLOY_PATH} && echo '${NAS_SUDO_PASS}' | sudo -S ${DOCKER} compose ps --format 'table {{.Name}}\t{{.Status}}'" 2>&1 | grep -v '^\[sudo\]' || echo " 컨테이너 상태를 가져올 수 없습니다" # === 최근 배포 로그 === echo "" echo -e "${CYAN}[최근 배포 로그]${NC}" ssh_cmd "tail -5 ${NAS_DEPLOY_PATH}/DEPLOY_LOG" 2>/dev/null | sed 's/^/ /' || echo " 배포 로그가 없습니다"