desktop 앱 적용

This commit is contained in:
Macbook
2026-06-14 10:15:54 +09:00
parent 7a2f65088c
commit 86b99d8c10
81 changed files with 8164 additions and 37 deletions
+128
View File
@@ -0,0 +1,128 @@
#!/usr/bin/env bash
# GoldenChart Desktop — macOS Jenkins 빌드 (macOS dmg + Windows NSIS cross-build)
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
cd "$ROOT"
# shellcheck disable=SC1091
source "$ROOT/scripts/desktop-dev-path.sh"
# shellcheck disable=SC1091
[[ -f "$HOME/.cargo/env" ]] && source "$HOME/.cargo/env"
BUILD_MAC=1
BUILD_WIN=1
BUMP_VERSION="${BUMP_VERSION:-}"
while [[ $# -gt 0 ]]; do
case "$1" in
--mac) BUILD_WIN=0; shift ;;
--win) BUILD_MAC=0; shift ;;
--all) BUILD_MAC=1; BUILD_WIN=1; shift ;;
--bump-version) BUMP_VERSION="$2"; shift 2 ;;
*) echo "Unknown arg: $1"; exit 1 ;;
esac
done
echo "=== GoldenChart Desktop Build ==="
echo "Root: $ROOT"
echo "Git: $(git -C "$ROOT" rev-parse --short HEAD 2>/dev/null || echo 'n/a')"
need_cmd() {
if ! command -v "$1" >/dev/null 2>&1; then
echo "Missing: $1 — run ./scripts/install-desktop-build-deps.sh"
exit 1
fi
}
need_cmd node
need_cmd npm
need_cmd cargo
need_cmd rustc
if [[ "$BUILD_WIN" -eq 1 ]]; then
need_cmd cargo-xwin
rustup target add x86_64-pc-windows-msvc 2>/dev/null || true
fi
CONF="$ROOT/desktop/src-tauri/tauri.conf.json"
if [[ -n "$BUMP_VERSION" ]]; then
node -e "
const fs=require('fs'); const p=process.argv[1]; const b=process.argv[2];
const c=JSON.parse(fs.readFileSync(p,'utf8'));
const [a,x,y]=c.version.split('.').map(Number);
let nv=c.version;
if(b==='patch') nv=[a,x,y+1].join('.');
else if(b==='minor') nv=[a,x+1,0].join('.');
else if(b==='major') nv=[a+1,0,0].join('.');
else nv=b;
c.version=nv; fs.writeFileSync(p, JSON.stringify(c,null,2)+'\n');
console.log('version', nv);
" "$CONF" "$BUMP_VERSION"
fi
VERSION="$(node -p "require('$CONF').version")"
echo "Version: $VERSION"
if [[ -f "$ROOT/scripts/patch-tauri-updater-pubkey.sh" ]]; then
chmod +x "$ROOT/scripts/patch-tauri-updater-pubkey.sh"
fi
chmod +x "$ROOT/scripts/prepare-tauri-build.sh" 2>/dev/null || true
# shellcheck disable=SC1091
source "$ROOT/scripts/prepare-tauri-build.sh"
npm install
echo "--- Vite build (desktop) ---"
npm run build -w @goldenchart/desktop
DESKTOP_DIR="$ROOT/desktop"
TAURI_TARGET="$DESKTOP_DIR/src-tauri/target"
ARTIFACT_DIR="$ROOT/dist-desktop"
UPDATES_DIR="$ARTIFACT_DIR/updates"
rm -rf "$ARTIFACT_DIR"
mkdir -p "$ARTIFACT_DIR" "$UPDATES_DIR"
collect_updater_artifacts() {
find "$TAURI_TARGET" \( \
-name '*.app.tar.gz' -o \
-name '*.tar.gz' -path '*/bundle/macos/*' -o \
-name '*.nsis.zip' -o \
-name '*-setup.nsis.zip' \
\) -type f 2>/dev/null | while read -r f; do
cp -f "$f" "$UPDATES_DIR/"
echo " updater bundle: $(basename "$f")"
done
}
if [[ "$BUILD_MAC" -eq 1 ]]; then
echo "--- Tauri build (macOS) ---"
(cd "$DESKTOP_DIR" && npm run tauri:build:mac)
find "$TAURI_TARGET/release/bundle" -name '*.dmg' -exec cp -f {} "$ARTIFACT_DIR/" \; 2>/dev/null || true
collect_updater_artifacts
fi
if [[ "$BUILD_WIN" -eq 1 ]]; then
echo "--- Tauri build (Windows NSIS cross) ---"
(cd "$DESKTOP_DIR" && npm run tauri:build:win)
find "$TAURI_TARGET" -path '*x86_64-pc-windows-msvc*' -name '*-setup.exe' -exec cp -f {} "$ARTIFACT_DIR/" \; 2>/dev/null || true
collect_updater_artifacts
fi
GIT_SHA="$(git -C "$ROOT" rev-parse HEAD 2>/dev/null || echo '')"
GIT_SHORT="$(git -C "$ROOT" rev-parse --short HEAD 2>/dev/null || echo '')"
cat > "$ARTIFACT_DIR/build-info.json" <<EOF
{
"version": "$VERSION",
"gitSha": "$GIT_SHA",
"gitShort": "$GIT_SHORT",
"builtAt": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
"buildNumber": "${BUILD_NUMBER:-local}"
}
EOF
echo "--- Artifacts ($ARTIFACT_DIR) ---"
ls -la "$ARTIFACT_DIR" || true
echo "--- Updater bundles ($UPDATES_DIR) ---"
ls -la "$UPDATES_DIR" 2>/dev/null || true
echo "Done."