Deploy: GitHub submodule sync 2026-07-24 09:27:56
This commit is contained in:
+40
-7
@@ -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)"
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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/' \
|
||||
|
||||
Reference in New Issue
Block a user