From 7f5e7b22d2e4471311378fbed4d2d37a54c37157 Mon Sep 17 00:00:00 2001 From: Macbook Date: Sun, 14 Jun 2026 17:26:35 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20Desktop=20publish=EA=B0=80=20build-info?= =?UTF-8?q?=20=EB=B2=84=EC=A0=84=EC=9D=84=20tauri.conf=EB=A1=9C=20?= =?UTF-8?q?=EB=8D=AE=EC=96=B4=EC=93=B0=EC=A7=80=20=EC=95=8A=EC=9D=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CI bump(0.1.7) 후 deploy checkout으로 tauri.conf가 0.1.4로 돌아가도 latest.json에 올바른 빌드 버전이 반영되도록 한다. Co-authored-by: Cursor --- scripts/publish-desktop-update.sh | 17 +++++++++-------- scripts/reconcile-desktop-latest-json.sh | 17 ++++------------- 2 files changed, 13 insertions(+), 21 deletions(-) diff --git a/scripts/publish-desktop-update.sh b/scripts/publish-desktop-update.sh index 4e025c9..ff09d08 100755 --- a/scripts/publish-desktop-update.sh +++ b/scripts/publish-desktop-update.sh @@ -13,8 +13,6 @@ DESKTOP_RELEASE_DIR="${GC_DESKTOP_APP_RELEASE_DIR:-$ROOT/data/desktop-releases}" KEY_PATH="${TAURI_SIGNER_KEY:-$HOME/.tauri/goldenchart.key}" DESKTOP_DIR="$ROOT/desktop" CONF="$DESKTOP_DIR/src-tauri/tauri.conf.json" -VERSION="$(node -p "require('$CONF').version")" -NOTES="${DESKTOP_RELEASE_NOTES:-GoldenChart Desktop $VERSION}" BUILD_INFO="$ARTIFACT_DIR/build-info.json" export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:${PATH:-/usr/bin:/bin}" @@ -23,6 +21,14 @@ export PATH="/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:${PATH:-/usr/bi log() { echo "[publish-desktop] $*"; } +# CI bump 후 deploy checkout 등으로 tauri.conf가 되돌아갈 수 있음 — build-info 우선 +VERSION="$(node -p "require('$CONF').version" 2>/dev/null || echo '0.1.0')" +if [[ -f "$BUILD_INFO" ]]; then + VERSION="$(node -e "try{console.log(JSON.parse(require('fs').readFileSync(process.argv[1],'utf8')).version||'')}catch{}" "$BUILD_INFO" 2>/dev/null || echo "$VERSION")" + [[ -z "$VERSION" ]] && VERSION="$(node -p "require('$CONF').version" 2>/dev/null || echo '0.1.0')" +fi +NOTES="${DESKTOP_RELEASE_NOTES:-GoldenChart Desktop $VERSION}" + log "=== Publish Desktop v$VERSION ===" log "Updates src: $UPDATES_SRC" log "Web static: $WEB_STATIC_DIR" @@ -62,14 +68,9 @@ else log " ./scripts/setup-desktop-updater-keys.sh 실행 후 Jenkins Credential 등록" fi -# build-info 복사 +# build-info 복사 (빌드 시 기록된 버전 유지 — tauri.conf로 덮어쓰지 않음) if [[ -f "$BUILD_INFO" ]]; then cp -f "$BUILD_INFO" "$PUBLISH_UPDATES/build-info.json" - node -e " -const fs=require('fs'); const p=process.argv[1]; const v=process.argv[2]; -const j=JSON.parse(fs.readFileSync(p,'utf8')); j.version=v; -fs.writeFileSync(p, JSON.stringify(j,null,2)+'\n'); -" "$PUBLISH_UPDATES/build-info.json" "$VERSION" fi # latest.json diff --git a/scripts/reconcile-desktop-latest-json.sh b/scripts/reconcile-desktop-latest-json.sh index 9ad492b..7b401a4 100755 --- a/scripts/reconcile-desktop-latest-json.sh +++ b/scripts/reconcile-desktop-latest-json.sh @@ -17,19 +17,10 @@ fi VERSION="$(node -p "require('$CONF').version" 2>/dev/null || echo '0.1.0')" BUILD_INFO="$UPDATES_DIR/build-info.json" if [[ -f "$BUILD_INFO" ]]; then - VERSION="$(node < { - const pa = a.split('.').map(Number), pb = b.split('.').map(Number); - for (let i = 0; i < 3; i++) { const d = (pa[i]||0)-(pb[i]||0); if (d) return d; } - return 0; -}; -const confV = '$VERSION'; -let biV = confV; -try { biV = JSON.parse(fs.readFileSync('$BUILD_INFO', 'utf8')).version || confV; } catch {} -console.log(cmp(biV, confV) > 0 ? biV : confV); -NODE -)" + BI_VER="$(node -e "try{console.log(JSON.parse(require('fs').readFileSync(process.argv[1],'utf8')).version||'')}catch{}" "$BUILD_INFO" 2>/dev/null || true)" + if [[ -n "$BI_VER" ]]; then + VERSION="$BI_VER" + fi fi # dmg/exe 설치 파일명 버전은 manifest에 반영하지 않음 (updater tar.gz/exe와 불일치 시 루프 유발) NOTES="${DESKTOP_RELEASE_NOTES:-GoldenChart Desktop $VERSION}"