fix: 원격 배포 rsync 제외 패턴이 소스를 잘못 걸러내던 문제 수정

tar 기반 rsync 대체 스크립트가 rsync 의 'node_modules/' 문법을 매칭하지
못해 node_modules 를 통째로 전송하다 메모리 부족으로 죽었다. 반대로
슬래시만 떼면 'build' 가 자바 패키지 kakao.response.build 까지 제외해
kakaoChatbotSkill 컴파일이 깨졌다. 선행 슬래시를 전송 루트 기준 고정으로
해석하도록 구분해 둘 다 해결한다.

배포 중 자동 커밋에 딸려 들어갔던 일회용 진단 스크립트도 함께 제거한다.
This commit is contained in:
bkyungee
2026-08-13 15:07:36 +09:00
parent 493b07ec30
commit 78d549194c
4 changed files with 13 additions and 40 deletions
-16
View File
@@ -1,16 +0,0 @@
#!/usr/bin/env bash
ssh -o BatchMode=yes -o ConnectTimeout=15 aidev@chatbot.exdev.co.kr 'bash -s' <<'EOSSH'
export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/Applications/Docker.app/Contents/Resources/bin:$PATH"
echo "=== listening ports ==="
for p in 16000 16001 16002 27017 1521 28012 28013 8086 8083 8092 443; do
if lsof -iTCP:$p -sTCP:LISTEN >/dev/null 2>&1; then echo "UP :$p"; else echo "DOWN :$p"; fi
done
echo "=== docker ps ==="
docker ps --format '{{.Names}}\t{{.Status}}' 2>&1 | head -20
echo "=== docker compose plugin ==="
docker compose version 2>&1 | head -2
echo "=== public-ai timestamp ==="
ls -la /Users/aidev/dev/exAichatbot_agent/chatbotApp-chatbot2.0-agent/public-ai/index.html 2>/dev/null || echo "(missing)"
echo "=== HTTPS UI ==="
curl -s -o /dev/null -w 'https=%{http_code}\n' -m 10 https://chatbot.exdev.co.kr/chatbot/ai/ 2>&1
EOSSH
+7 -1
View File
@@ -105,7 +105,13 @@ TAR_EXCLUDES=()
for pat in "${EXCLUDES[@]}"; do
# tar 의 --exclude 는 'node_modules/' 처럼 슬래시로 끝나면 디렉터리에 매칭되지 않는다.
# (rsync 문법 그대로 넘기면 node_modules 가 통째로 전송돼 메모리 부족으로 죽는다)
TAR_EXCLUDES+=(--exclude "${pat%/}")
pat="${pat%/}"
if [[ "${pat}" == /* ]]; then
# rsync 의 선행 슬래시 = 전송 루트 기준 고정. tar 멤버명은 './' 로 시작한다.
TAR_EXCLUDES+=(--anchored --exclude ".${pat}")
else
TAR_EXCLUDES+=(--no-anchored --exclude "${pat}")
fi
done
ssh -o BatchMode=yes "${HOST}" "mkdir -p '${REMOTE_PATH}'"
-19
View File
@@ -1,19 +0,0 @@
#!/usr/bin/env bash
export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/Applications/Docker.app/Contents/Resources/bin:/usr/bin:/bin:/usr/sbin:/sbin"
cd /Users/aidev/dev/exAichatbot_agent
git config core.autocrlf false
git config core.eol lf
python3 - << 'PYEOF'
import os
for d in ['kakaoChatbotSkill-chatbot2.0-agent','chatbotApi-chatbot2.0-agent']:
f = d+'/gradlew'
if os.path.exists(f):
data=open(f,'rb').read().replace(b'\r\n',b'\n').replace(b'\r',b'\n')
open(f,'wb').write(data)
os.chmod(f,0o755)
print('fixed:', f)
PYEOF
bash server-dev/start-all-server.sh --no-pull --no-push --skip-desktop
+6 -4
View File
@@ -23,16 +23,18 @@ for path in "${SUBMODULES[@]}"; do
local_src="${ROOT_DIR}/${path}"
[[ -d "${local_src}" ]] || { echo "ERROR: ${local_src} 없음"; exit 1; }
log ">>> rsync ${path}"
# build/dist/logs 는 자바 패키지명(예: kakao.response.build)과 충돌하므로
# 선행 슬래시로 프로젝트 최상위에만 적용한다.
rsync -az --delete \
--exclude 'node_modules/' \
--exclude 'build/' \
--exclude 'dist/' \
--exclude '.gradle/' \
--exclude 'qdrant_data/' \
--exclude 'logs/' \
--exclude '.next/' \
--exclude 'web/out/' \
--exclude '.git/' \
--exclude '/build/' \
--exclude '/dist/' \
--exclude '/logs/' \
--exclude '/web/out/' \
"${local_src}/" "${EXDEV_SSH}:${REMOTE_WT}/${path}/"
done