앱 빌드시 버전갱신 문제
This commit is contained in:
@@ -59,12 +59,13 @@ public class DesktopAppReleaseService {
|
|||||||
String publishedVer = readLatestJsonVersion();
|
String publishedVer = readLatestJsonVersion();
|
||||||
String buildInfoVer = readBuildInfoVersion(releaseDirectory());
|
String buildInfoVer = readBuildInfoVersion(releaseDirectory());
|
||||||
|
|
||||||
|
// 헤더 버전: 실제 설치 파일 > build-info > 설정값 (latest.json은 업데이터용이라 다운로드와 어긋날 수 있음)
|
||||||
|
String installerVer = maxSemver(macVer, winVer);
|
||||||
String version = maxSemver(
|
String version = maxSemver(
|
||||||
nullIfBlank(configuredVersion),
|
installerVer,
|
||||||
publishedVer,
|
|
||||||
buildInfoVer,
|
buildInfoVer,
|
||||||
macVer,
|
nullIfBlank(configuredVersion),
|
||||||
winVer
|
publishedVer
|
||||||
);
|
);
|
||||||
|
|
||||||
Instant latestUpdated = Stream.of(macFile, winFile)
|
Instant latestUpdated = Stream.of(macFile, winFile)
|
||||||
|
|||||||
@@ -119,17 +119,41 @@ collect_updater_artifacts() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
copy_installer_matching_version() {
|
||||||
|
local kind="$1"
|
||||||
|
shift
|
||||||
|
local found=""
|
||||||
|
while IFS= read -r f; do
|
||||||
|
[[ -z "$f" ]] && continue
|
||||||
|
if [[ "$f" == *"${VERSION}"* ]]; then
|
||||||
|
found="$f"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done < <("$@")
|
||||||
|
if [[ -z "$found" ]]; then
|
||||||
|
echo "ERROR: ${kind} installer for v${VERSION} not found (stale target cache ignored)." >&2
|
||||||
|
echo " Searched: $*" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
cp -f "$found" "$ARTIFACT_DIR/"
|
||||||
|
echo " ${kind} installer: $(basename "$found")"
|
||||||
|
}
|
||||||
|
|
||||||
if [[ "$BUILD_MAC" -eq 1 ]]; then
|
if [[ "$BUILD_MAC" -eq 1 ]]; then
|
||||||
echo "--- Tauri build (macOS) ---"
|
echo "--- Tauri build (macOS) ---"
|
||||||
|
find "$TAURI_TARGET/release/bundle" -name '*.dmg' -delete 2>/dev/null || true
|
||||||
(cd "$DESKTOP_DIR" && npm run tauri:build:mac)
|
(cd "$DESKTOP_DIR" && npm run tauri:build:mac)
|
||||||
find "$TAURI_TARGET/release/bundle" -name '*.dmg' -exec cp -f {} "$ARTIFACT_DIR/" \; 2>/dev/null || true
|
copy_installer_matching_version "macOS" \
|
||||||
|
find "$TAURI_TARGET/release/bundle" -name '*.dmg' 2>/dev/null
|
||||||
collect_updater_artifacts
|
collect_updater_artifacts
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$BUILD_WIN" -eq 1 ]]; then
|
if [[ "$BUILD_WIN" -eq 1 ]]; then
|
||||||
echo "--- Tauri build (Windows NSIS cross) ---"
|
echo "--- Tauri build (Windows NSIS cross) ---"
|
||||||
|
find "$TAURI_TARGET" -path '*x86_64-pc-windows-msvc*' -name '*-setup.exe' -delete 2>/dev/null || true
|
||||||
(cd "$DESKTOP_DIR" && npm run tauri:build:win)
|
(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
|
copy_installer_matching_version "Windows" \
|
||||||
|
find "$TAURI_TARGET" -path '*x86_64-pc-windows-msvc*' -name '*-setup.exe' 2>/dev/null
|
||||||
collect_updater_artifacts
|
collect_updater_artifacts
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -35,16 +35,40 @@ log "Web static: $WEB_STATIC_DIR"
|
|||||||
|
|
||||||
mkdir -p "$WEB_STATIC_DIR"
|
mkdir -p "$WEB_STATIC_DIR"
|
||||||
|
|
||||||
|
prune_old_installers() {
|
||||||
|
local dir="$1"
|
||||||
|
[[ -d "$dir" ]] || return 0
|
||||||
|
find "$dir" -maxdepth 1 -type f \( \
|
||||||
|
-name 'GoldenChart_*.dmg' -o \
|
||||||
|
-name 'GoldenChart_*setup.exe' -o \
|
||||||
|
-name 'GoldenChart_*-setup.exe' \
|
||||||
|
\) -delete 2>/dev/null || true
|
||||||
|
}
|
||||||
|
|
||||||
# 설치 파일(dist-desktop/*.dmg, *setup.exe) 복사 — nginx static + backend API 디렉터리
|
# 설치 파일(dist-desktop/*.dmg, *setup.exe) 복사 — nginx static + backend API 디렉터리
|
||||||
if [[ -d "$ARTIFACT_DIR" ]]; then
|
if [[ -d "$ARTIFACT_DIR" ]]; then
|
||||||
mkdir -p "$DESKTOP_RELEASE_DIR"
|
mkdir -p "$DESKTOP_RELEASE_DIR"
|
||||||
# 구버전 설치 파일 제거 (Windows exe 0.1.3 잔존 등 방지)
|
prune_old_installers "$DESKTOP_RELEASE_DIR"
|
||||||
find "$DESKTOP_RELEASE_DIR" -maxdepth 1 -type f \( -name 'GoldenChart_*.dmg' -o -name 'GoldenChart_*setup.exe' -o -name 'GoldenChart_*-setup.exe' \) -delete 2>/dev/null || true
|
prune_old_installers "$WEB_STATIC_DIR"
|
||||||
find "$ARTIFACT_DIR" -maxdepth 1 -type f \( -name '*.dmg' -o -name '*setup.exe' \) | while read -r f; do
|
|
||||||
|
INSTALLER_COUNT=0
|
||||||
|
while IFS= read -r f; do
|
||||||
|
[[ -z "$f" ]] && continue
|
||||||
|
base="$(basename "$f")"
|
||||||
|
if [[ "$base" != *"${VERSION}"* ]]; then
|
||||||
|
log "[WARN] skip installer (version mismatch): $base (expected v${VERSION})"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
cp -f "$f" "$WEB_STATIC_DIR/"
|
cp -f "$f" "$WEB_STATIC_DIR/"
|
||||||
cp -f "$f" "$DESKTOP_RELEASE_DIR/"
|
cp -f "$f" "$DESKTOP_RELEASE_DIR/"
|
||||||
log "Installer: $(basename "$f")"
|
log "Installer: $base"
|
||||||
done
|
INSTALLER_COUNT=$((INSTALLER_COUNT + 1))
|
||||||
|
done < <(find "$ARTIFACT_DIR" -maxdepth 1 -type f \( -name '*.dmg' -o -name '*setup.exe' \) 2>/dev/null)
|
||||||
|
|
||||||
|
if [[ "$INSTALLER_COUNT" -eq 0 ]]; then
|
||||||
|
log "[WARN] v${VERSION} 설치 파일(dmg/exe) 없음 — latest.json 만 갱신될 수 있음"
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ -f "$BUILD_INFO" ]]; then
|
if [[ -f "$BUILD_INFO" ]]; then
|
||||||
cp -f "$BUILD_INFO" "$DESKTOP_RELEASE_DIR/build-info.json"
|
cp -f "$BUILD_INFO" "$DESKTOP_RELEASE_DIR/build-info.json"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user