ci: node_modules 영구 캐시 추가 (package-lock.json 해시 기반)

매 CI 실행마다 npm install 5분 소요 문제 해결:
- /volume1/gitea/node_cache/<lock-hash>/node_modules 에 캐시 저장
- 캐시 히트 시 symlink로 즉시 연결 (~1초)
- package-lock.json 변경 시에만 재설치
- 오래된 캐시 자동 정리 (최근 3개 유지)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-13 22:12:48 +09:00
parent 44141ecbee
commit fb8833b66e
+22 -1
View File
@@ -64,7 +64,28 @@ jobs:
echo "$VENV/bin" >> $GITHUB_PATH
- name: Install Node Dependencies
run: npm install --quiet
run: |
# package-lock.json 해시로 캐시 유효성 판단
CACHE_BASE=/volume1/gitea/node_cache
LOCK_HASH=$(md5sum package-lock.json 2>/dev/null | cut -d' ' -f1 || echo "no-lock")
CACHE_DIR="$CACHE_BASE/$LOCK_HASH"
if [ -d "$CACHE_DIR/node_modules" ]; then
echo "=== node_modules 캐시 히트: $LOCK_HASH ==="
# 캐시에서 심볼릭 링크로 연결 (복사 대신 즉시)
rm -rf node_modules
ln -s "$CACHE_DIR/node_modules" node_modules
else
echo "=== npm install (최초 or lock 변경) ==="
npm install --quiet
# 캐시 저장
mkdir -p "$CACHE_DIR"
cp -r node_modules "$CACHE_DIR/node_modules"
echo "캐시 저장 완료: $CACHE_DIR"
# 오래된 캐시 정리 (최근 3개만 유지)
ls -dt "$CACHE_BASE"/*/ 2>/dev/null | tail -n +4 | xargs rm -rf 2>/dev/null || true
fi
node --version && npm --version
- name: Validate Specs
run: python3 tools/validate_specs.py