Files
goldenChart/scripts/setup-desktop-updater-keys.sh
Macbook 5c29ddaf23 fix: desktop updater signing in non-interactive CI
Use --ci for key generation and pass empty password to tauri signer sign
so Jenkins/SSH builds can sign updater bundles without a TTY.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-14 11:43:23 +09:00

50 lines
1.6 KiB
Bash
Executable File

#!/usr/bin/env bash
# Tauri updater minisign 키쌍 생성 — 1회 (Jenkins secret 또는 서버 로컬)
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
KEY_PATH="${TAURI_SIGNER_KEY:-$HOME/.tauri/goldenchart.key}"
PUB_PATH="${TAURI_SIGNER_PUB:-$ROOT/desktop/updater.pub}"
DESKTOP_DIR="$ROOT/desktop"
export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:${PATH:-/usr/bin:/bin}"
# shellcheck disable=SC1091
[[ -f "$HOME/.cargo/env" ]] && source "$HOME/.cargo/env"
mkdir -p "$(dirname "$KEY_PATH")"
if [[ -f "$KEY_PATH" ]]; then
echo "기존 private key: $KEY_PATH"
else
echo "새 updater 키 생성: $KEY_PATH"
GEN_OUT="$(cd "$DESKTOP_DIR" && CI=1 npx tauri signer generate -w "$KEY_PATH" -f --ci 2>&1)" || true
echo "$GEN_OUT"
if [[ ! -f "$KEY_PATH" ]]; then
echo "키 생성 실패. Rust/tauri-cli 확인 후 재시도."
exit 1
fi
fi
if [[ ! -f "$PUB_PATH" ]]; then
echo "Public key 추출 시도..."
if echo "$GEN_OUT" | grep -qi 'public key'; then
echo "$GEN_OUT" | grep -i 'public key' | tail -1 | sed -E 's/^[^:]*:[[:space:]]*//' > "$PUB_PATH"
fi
if [[ ! -s "$PUB_PATH" ]] && [[ -f "${KEY_PATH}.pub" ]]; then
cp "${KEY_PATH}.pub" "$PUB_PATH"
fi
if [[ ! -s "$PUB_PATH" ]]; then
echo "desktop/updater.pub 를 수동 생성하세요 (tauri signer generate 출력의 public key)."
exit 1
fi
fi
chmod +x "$ROOT/scripts/patch-tauri-updater-pubkey.sh"
"$ROOT/scripts/patch-tauri-updater-pubkey.sh"
echo ""
echo "=== updater 키 설정 완료 ==="
echo " Private: $KEY_PATH (git/Jenkins secret — 커밋 금지)"
echo " Public: $PUB_PATH"
echo "Jenkins: TAURI_SIGNER_KEY=$KEY_PATH"