From 6aa99f3d6d97b08f2733af03eca29747fcd31b83 Mon Sep 17 00:00:00 2001 From: Macbook Date: Fri, 24 Jul 2026 09:27:56 +0900 Subject: [PATCH] Deploy: GitHub submodule sync 2026-07-24 09:27:56 --- local-dev/start-all.sh | 47 ++++++++++++++++++++++++----- server-dev/start-all-server.sh | 25 +++++++++++++-- server-dev/sync-submodules-rsync.sh | 2 ++ 3 files changed, 65 insertions(+), 9 deletions(-) diff --git a/local-dev/start-all.sh b/local-dev/start-all.sh index 0e02d57..24e951f 100755 --- a/local-dev/start-all.sh +++ b/local-dev/start-all.sh @@ -1,11 +1,13 @@ #!/usr/bin/env bash -# 로컬 전체 스택 기동 (exdev AI SSH 터널 + 원격 Mongo/Qdrant + RAG + WAS + Skill + chatbotApp) +# 로컬 전체 스택 기동 (exdev AI SSH 터널 + 원격 Mongo/Qdrant + RAG + WAS + Skill + chatbotApp + Desktop) # Mongo/Qdrant 는 stock.exdev.co.kr 를 사용 (로컬 컨테이너 미기동) # # ./local-dev/start-all.sh +# ./start-all.sh # 루트 래퍼 # ./local-dev/start-all.sh --no-tunnel # ./local-dev/start-all.sh --skip-java -# ./local-dev/start-all.sh --no-build +# ./local-dev/start-all.sh --no-build # RAG/웹/데스크톱 빌드 생략 +# ./local-dev/start-all.sh --skip-desktop # Electron 재빌드만 생략 # # 종료: ./local-dev/stop-all.sh set -euo pipefail @@ -19,6 +21,7 @@ RAG_DIR="${ROOT_DIR}/exAiChatBot-chatbot2.0-agent" API_DIR="${ROOT_DIR}/chatbotApi-chatbot2.0-agent" SKILL_DIR="${ROOT_DIR}/kakaoChatbotSkill-chatbot2.0-agent" APP_DIR="${ROOT_DIR}/chatbotApp-chatbot2.0-agent" +DESKTOP_DIR="${ROOT_DIR}/chatbotDesktopApp-chatbot2.0" ENV_TEMPLATE="${LOCAL_DEV_DIR}/env.exdev-ai.template" RAG_ENV="${RAG_DIR}/.env" @@ -42,17 +45,19 @@ QDRANT_PORT="${QDRANT_PORT:-6333}" SKIP_TUNNEL=false SKIP_JAVA=false NO_BUILD=false +SKIP_DESKTOP=false for arg in "$@"; do case "$arg" in --no-tunnel) SKIP_TUNNEL=true ;; --skip-java) SKIP_JAVA=true ;; --no-build) NO_BUILD=true ;; + --skip-desktop) SKIP_DESKTOP=true ;; --sync-qdrant) echo "경고: 원격 Qdrant 사용 중이라 --sync-qdrant 는 무시됩니다." ;; -h|--help) - sed -n '2,12p' "$0" + sed -n '2,14p' "$0" exit 0 ;; *) @@ -288,7 +293,7 @@ verify_stack() { curl -sf "http://127.0.0.1:${RAG_PORT}/health" | grep -q '"status"' || { log "❌ RAG health"; ok=false; } wait_port "${WAS_PORT}" "chatbotApi" 5 || ok=false wait_port "${SKILL_PORT}" "kakaoChatbotSkill" 5 || ok=false - curl -sf "http://127.0.0.1:${APP_PORT}/chatbot/app/" | grep -q 'data-chatbot-app' || { log "❌ chatbotApp UI"; ok=false; } + curl -sf "http://127.0.0.1:${APP_PORT}/chatbot/ai/" | grep -q 'data-chatbot-app' || { log "❌ chatbotApp UI"; ok=false; } if $ok; then log "✅ 전체 스택 정상" @@ -298,6 +303,31 @@ verify_stack() { return 1 } +build_chatbot_app() { + if $NO_BUILD && [[ -f "${APP_DIR}/public-ai/index.html" ]]; then + log "chatbotApp 빌드 생략 (--no-build)" + return 0 + fi + log "chatbotApp Next.js 빌드 (수정사항 반영)..." + ( + cd "${APP_DIR}/web" + npm ci --prefer-offline 2>/dev/null || npm install + ) + bash "${APP_DIR}/build.sh" + [[ -f "${APP_DIR}/public-ai/index.html" ]] || fail "chatbotApp public-ai/ 빌드 실패" +} + +build_desktop_app() { + if $NO_BUILD || $SKIP_DESKTOP; then + log "데스크톱 앱 빌드 생략 (--no-build/--skip-desktop)" + return 0 + fi + [[ -d "${DESKTOP_DIR}" ]] || fail "데스크톱 앱 디렉터리 없음: ${DESKTOP_DIR}" + chmod +x "${DESKTOP_DIR}/build-and-publish.sh" + # 로컬은 Mac 위주 — Windows 크로스빌드는 시간이 길어 SKIP_WIN 기본 1 (서버 배포는 Win 포함) + SKIP_WIN="${SKIP_WIN:-1}" bash "${DESKTOP_DIR}/build-and-publish.sh" +} + # ── main ── mkdir -p "${RUN_DIR}" "${LOG_DIR}" @@ -332,12 +362,15 @@ if ! $SKIP_JAVA; then "RAG_AGENT_CHAT_URL=http://127.0.0.1:${RAG_PORT}/agent/chat" \ "CHATBOT_API_BASE_URL=http://127.0.0.1:${WAS_PORT}/api/" \ "INTERNAL_TOOL_API_KEY=${INTERNAL_TOOL_API_KEY}" \ - "CHATBOT_APP_URL=http://localhost:${APP_PORT}/chatbot/app/" + "CHATBOT_APP_URL=http://localhost:${APP_PORT}/chatbot/ai/" wait_port "${WAS_PORT}" "chatbotApi" 240 || true wait_port "${SKILL_PORT}" "kakaoChatbotSkill" 240 || true fi +build_chatbot_app +build_desktop_app + log "chatbotApp 기동..." docker rm -f ex-chatbot-app-web 2>/dev/null || true ( @@ -347,11 +380,11 @@ docker rm -f ex-chatbot-app-web 2>/dev/null || true docker compose up -d --force-recreate ) -wait_http "http://127.0.0.1:${APP_PORT}/chatbot/app/" "chatbotApp UI" 30 || true +wait_http "http://127.0.0.1:${APP_PORT}/chatbot/ai/" "chatbotApp UI" 30 || true log "==========================================" log "기동 완료" -log " UI http://127.0.0.1:${APP_PORT}/chatbot/app/" +log " UI http://127.0.0.1:${APP_PORT}/chatbot/ai/" log " RAG http://127.0.0.1:${RAG_PORT}/health" log " Admin http://127.0.0.1:${ADMIN_PORT}/" log " Mongo ${EXDEV_DATA_HOST}:${MONGO_PORT} (원격, RAG+WAS)" diff --git a/server-dev/start-all-server.sh b/server-dev/start-all-server.sh index 3362c96..00cd65e 100755 --- a/server-dev/start-all-server.sh +++ b/server-dev/start-all-server.sh @@ -3,6 +3,7 @@ # # ./server-dev/start-all-server.sh # ./server-dev/start-all-server.sh --no-build +# ./server-dev/start-all-server.sh --skip-desktop # ./server-dev/start-all-server.sh --skip-java # ./server-dev/start-all-server.sh --skip-legacy-stop # ./server-dev/start-all-server.sh --no-pull # git 동기화 생략 @@ -23,6 +24,7 @@ RAG_DIR="${ROOT_DIR}/exAiChatBot-chatbot2.0-agent" API_DIR="${ROOT_DIR}/chatbotApi-chatbot2.0-agent" SKILL_DIR="${ROOT_DIR}/kakaoChatbotSkill-chatbot2.0-agent" APP_DIR="${ROOT_DIR}/chatbotApp-chatbot2.0-agent" +DESKTOP_DIR="${ROOT_DIR}/chatbotDesktopApp-chatbot2.0" ENV_TEMPLATE="${SERVER_DEV_DIR}/env.exdev-server.template" RAG_ENV="${RAG_DIR}/.env" @@ -47,6 +49,7 @@ NO_BUILD=false SKIP_JAVA=false SKIP_LEGACY_STOP=false SKIP_CADDY=false +SKIP_DESKTOP=false NO_PULL=false NO_PUSH=false LOCAL_DEV=false @@ -58,11 +61,12 @@ for arg in "$@"; do --skip-java) SKIP_JAVA=true ;; --skip-legacy-stop) SKIP_LEGACY_STOP=true ;; --skip-caddy) SKIP_CADDY=true ;; + --skip-desktop) SKIP_DESKTOP=true ;; --no-pull) NO_PULL=true ;; --no-push) NO_PUSH=true ;; --local) LOCAL_DEV=true ;; -h|--help) - sed -n '2,12p' "$0" + sed -n '2,14p' "$0" exit 0 ;; *) @@ -165,6 +169,20 @@ build_chatbot_app_for_deploy() { bash "${APP_DIR}/build.sh" [[ -f "${APP_DIR}/public/index.html" ]] || fail "chatbotApp public/ 빌드 실패" [[ -f "${APP_DIR}/public-ai/index.html" ]] || fail "chatbotApp public-ai/ 빌드 실패" + build_desktop_app +} + +build_desktop_app() { + if $NO_BUILD || $SKIP_DESKTOP; then + log "데스크톱 앱 빌드 생략 (--no-build/--skip-desktop)" + return 0 + fi + [[ -d "${DESKTOP_DIR}" ]] || fail "데스크톱 앱 디렉터리 없음: ${DESKTOP_DIR}" + chmod +x "${DESKTOP_DIR}/build-and-publish.sh" + log "chatbotDesktopApp Electron 재빌드 + downloads 배포..." + # 서버/원격 배포용: Mac + Windows 모두 생성 + SKIP_WIN="${SKIP_WIN:-0}" SKIP_MAC="${SKIP_MAC:-0}" \ + bash "${DESKTOP_DIR}/build-and-publish.sh" } deploy_from_local_mac() { @@ -223,7 +241,8 @@ sync_source_from_git() { chmod +x "${tree}/server-dev/"*.sh 2>/dev/null || true chmod +x "${tree}/git_fetch_all.sh" 2>/dev/null || true chmod +x "${tree}/chatbotApp-chatbot2.0-agent/build.sh" 2>/dev/null || true - chmod +x "${tree}/start-all-server.sh" "${tree}/stop-all-server.sh" 2>/dev/null || true + chmod +x "${tree}/chatbotDesktopApp-chatbot2.0/build-and-publish.sh" 2>/dev/null || true + chmod +x "${tree}/start-all-server.sh" "${tree}/stop-all-server.sh" "${tree}/start-all.sh" 2>/dev/null || true } is_exdev_server() { @@ -236,6 +255,7 @@ run_local_dev() { local -a args=() $NO_BUILD && args+=(--no-build) $SKIP_JAVA && args+=(--skip-java) + $SKIP_DESKTOP && args+=(--skip-desktop) if ((${#args[@]} > 0)); then exec "${ROOT_DIR}/local-dev/start-all.sh" "${args[@]}" else @@ -437,6 +457,7 @@ build_chatbot_app() { npm ci --prefer-offline 2>/dev/null || npm install ) bash "${APP_DIR}/build.sh" + build_desktop_app } start_chatbot_app() { diff --git a/server-dev/sync-submodules-rsync.sh b/server-dev/sync-submodules-rsync.sh index 9d6c590..f304cb1 100755 --- a/server-dev/sync-submodules-rsync.sh +++ b/server-dev/sync-submodules-rsync.sh @@ -14,6 +14,7 @@ SUBMODULES=( chatbotApi-chatbot2.0-agent exAiChatBot-chatbot2.0-agent kakaoChatbotSkill-chatbot2.0-agent + chatbotDesktopApp-chatbot2.0 ) log "원격 동기화: ${EXDEV_SSH}:${REMOTE_WT}" @@ -25,6 +26,7 @@ for path in "${SUBMODULES[@]}"; do rsync -az --delete \ --exclude 'node_modules/' \ --exclude 'build/' \ + --exclude 'dist/' \ --exclude '.gradle/' \ --exclude 'qdrant_data/' \ --exclude 'logs/' \