69 lines
2.3 KiB
Bash
Executable File
69 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# GoldenChart Desktop — smoke test (CI·로컬)
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
BASE_URL="${DESKTOP_UPDATE_BASE_URL:-https://stock.exdev.co.kr/desktop/updates}"
|
|
FAIL=0
|
|
|
|
ok() { echo "[OK] $*"; }
|
|
fail() { echo "[FAIL] $*"; FAIL=1; }
|
|
|
|
echo "=== Desktop Smoke Test ==="
|
|
|
|
# 1) Vite 번들
|
|
if npm run build -w @goldenchart/desktop >/dev/null 2>&1; then
|
|
ok "desktop vite build"
|
|
else
|
|
fail "desktop vite build"
|
|
fi
|
|
|
|
# 2) updater pubkey
|
|
if [[ -f "$ROOT/desktop/updater.pub" ]]; then
|
|
ok "desktop/updater.pub exists"
|
|
else
|
|
echo "[WARN] desktop/updater.pub 없음 — setup-desktop-updater-keys.sh 필요"
|
|
fi
|
|
|
|
# 3) tauri.conf pubkey not placeholder
|
|
PUB="$(node -p "require('$ROOT/desktop/src-tauri/tauri.conf.json').plugins?.updater?.pubkey || ''")"
|
|
if [[ -n "$PUB" && "$PUB" != "REPLACE_WITH_TAURI_SIGNER_PUBKEY" ]]; then
|
|
ok "tauri.conf updater pubkey configured"
|
|
else
|
|
echo "[WARN] tauri.conf pubkey 미설정"
|
|
fi
|
|
|
|
# 4) latest.json (local or remote)
|
|
LOCAL_LATEST="$ROOT/frontend/public/desktop/updates/latest.json"
|
|
if [[ -f "$LOCAL_LATEST" ]]; then
|
|
ok "local latest.json"
|
|
node -e "JSON.parse(require('fs').readFileSync('$LOCAL_LATEST','utf8'))" && ok "latest.json valid JSON"
|
|
fi
|
|
|
|
if curl -sf "${BASE_URL}/latest.json" >/dev/null 2>&1; then
|
|
REMOTE="$(curl -sf "${BASE_URL}/latest.json" 2>/dev/null || true)"
|
|
if [[ -z "$REMOTE" || "${#REMOTE}" -lt 8 ]]; then
|
|
HTTP_BASE="$(printf '%s' "$BASE_URL" | sed 's|^https://|http://|')"
|
|
HTTP_REMOTE="$(curl -sf "${HTTP_BASE}/latest.json" 2>/dev/null || true)"
|
|
if [[ -n "$HTTP_REMOTE" && "${#HTTP_REMOTE}" -ge 8 ]]; then
|
|
fail "remote HTTPS latest.json empty — HTTP는 정상 (${#HTTP_REMOTE}B). Caddy→gc-frontend:80 역프록시 점검"
|
|
fi
|
|
fail "remote latest.json empty (0-byte)"
|
|
fi
|
|
node -e "JSON.parse(process.argv[1])" "$REMOTE" && ok "remote latest.json ${BASE_URL}/latest.json"
|
|
else
|
|
echo "[WARN] remote latest.json unreachable (배포 전 정상)"
|
|
fi
|
|
|
|
# 5) 필수 스크립트
|
|
for s in build-desktop.sh publish-desktop-update.sh jenkins-desktop-pipeline.sh; do
|
|
if [[ -x "$ROOT/scripts/$s" ]]; then ok "scripts/$s"; else fail "scripts/$s missing"; fi
|
|
done
|
|
|
|
if [[ "$FAIL" -eq 0 ]]; then
|
|
echo "=== Smoke test passed ==="
|
|
exit 0
|
|
fi
|
|
echo "=== Smoke test failed ==="
|
|
exit 1
|