버전업데이트 수정

This commit is contained in:
Macbook
2026-06-14 23:44:22 +09:00
parent 0045f0ef2d
commit 8b982d7272
9 changed files with 191 additions and 12 deletions
+3
View File
@@ -15,6 +15,9 @@
"build:desktop:win": "npm run build -w @goldenchart/desktop && npm run tauri:build:win -w @goldenchart/desktop", "build:desktop:win": "npm run build -w @goldenchart/desktop && npm run tauri:build:win -w @goldenchart/desktop",
"install:desktop:deps": "./scripts/install-desktop-build-deps.sh", "install:desktop:deps": "./scripts/install-desktop-build-deps.sh",
"setup:desktop:keys": "./scripts/setup-desktop-updater-keys.sh", "setup:desktop:keys": "./scripts/setup-desktop-updater-keys.sh",
"bump:desktop": "./scripts/bump-desktop-version-for-push.sh",
"push:desktop": "./scripts/push-with-desktop-version.sh",
"hooks:desktop": "./scripts/install-desktop-git-hooks.sh",
"publish:desktop": "./scripts/publish-desktop-update.sh", "publish:desktop": "./scripts/publish-desktop-update.sh",
"smoke:desktop": "./scripts/smoke-test-desktop.sh", "smoke:desktop": "./scripts/smoke-test-desktop.sh",
"dev:app": "npm run dev -w @goldenchart/app", "dev:app": "npm run dev -w @goldenchart/app",
+18
View File
@@ -0,0 +1,18 @@
#!/usr/bin/env bash
# git push 전 desktop semver patch bump → tauri.conf.json + desktop/package.json
# (로컬 dist-desktop/build-info 는 무시 — stale 버전 방지)
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
WORK_TREE="${WORK_TREE:-$ROOT}"
CONF="${WORK_TREE}/desktop/src-tauri/tauri.conf.json"
PKG="${WORK_TREE}/desktop/package.json"
LATEST="${WORK_TREE}/frontend/public/desktop/updates/latest.json"
UPDATES_DIR="${WORK_TREE}/frontend/public/desktop/updates"
RELEASE_DIR="${GC_DESKTOP_APP_RELEASE_DIR:-$WORK_TREE/data/desktop-releases}"
export DESKTOP_BUMP_IGNORE_BUILD_INFO=1
export WORK_TREE
NEW_VER="$("$ROOT/scripts/bump-desktop-version-from-release.sh")"
echo "$NEW_VER"
+2 -1
View File
@@ -40,7 +40,8 @@ if (fs.existsSync(latestPath)) {
if (pub.version) base = maxVer(base, pub.version); if (pub.version) base = maxVer(base, pub.version);
} catch { /* ignore */ } } catch { /* ignore */ }
} }
if (fs.existsSync(buildInfoPath)) { const ignoreBuildInfo = process.env.DESKTOP_BUMP_IGNORE_BUILD_INFO === '1';
if (!ignoreBuildInfo && fs.existsSync(buildInfoPath)) {
try { try {
const bi = JSON.parse(fs.readFileSync(buildInfoPath, 'utf8')); const bi = JSON.parse(fs.readFileSync(buildInfoPath, 'utf8'));
if (bi.version) base = maxVer(base, bi.version); if (bi.version) base = maxVer(base, bi.version);
+64
View File
@@ -0,0 +1,64 @@
#!/usr/bin/env bash
# Desktop/Frontend 변경 push 시 semver bump 필수 (plain git push 차단)
set -euo pipefail
ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
cd "$ROOT"
DESKTOP_PATHS='^(desktop/|frontend/|scripts/(build-desktop|jenkins-desktop|publish-desktop|bump-desktop))'
read_local_version() {
"$ROOT/scripts/read-desktop-version.sh" 2>/dev/null || echo "0.0.0"
}
read_remote_version() {
local remote_ref="$1"
git show "${remote_ref}:desktop/src-tauri/tauri.conf.json" 2>/dev/null \
| node -e "let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{try{console.log(JSON.parse(d).version||'0.0.0')}catch{console.log('0.0.0')}})" \
|| echo "0.0.0"
}
version_gt() {
node -e "
const parse = v => String(v||'0').replace(/^v/i,'').split('.').map(n=>parseInt(n,10)||0);
const a=parse(process.argv[1]), b=parse(process.argv[2]);
for(let i=0;i<3;i++){const d=(a[i]||0)-(b[i]||0);if(d){process.exit(d>0?0:1)}}
process.exit(0);
" "$1" "$2"
}
while read -r _local_ref local_sha _remote_ref remote_sha; do
[[ "$local_sha" == "0000000000000000000000000000000000000000" ]] && continue
if [[ "$remote_sha" == "0000000000000000000000000000000000000000" ]]; then
range="$local_sha"
else
range="${remote_sha}..${local_sha}"
fi
if ! git diff --name-only "$range" 2>/dev/null | grep -Eq "$DESKTOP_PATHS"; then
continue
fi
local_ver="$(read_local_version)"
remote_ver="$(read_remote_version "$remote_sha")"
if version_gt "$local_ver" "$remote_ver"; then
continue
fi
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo " Desktop/Frontend 변경 push — semver bump 가 필요합니다."
echo " 로컬 v${local_ver} ≤ 원격 v${remote_ver}"
echo ""
echo " 다음 명령으로 bump + push + Jenkins 빌드:"
echo " ./scripts/push-with-desktop-version.sh"
echo ""
echo " bump 만:"
echo " ./scripts/bump-desktop-version-for-push.sh"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
exit 1
done
exit 0
+17
View File
@@ -0,0 +1,17 @@
#!/usr/bin/env bash
# Desktop semver pre-push hook 설치
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
HOOK_SRC="$ROOT/scripts/hooks/pre-push"
GIT_HOOK="$ROOT/.git/hooks/pre-push"
if [[ ! -d "$ROOT/.git" ]]; then
echo "ERROR: git repo 가 아닙니다: $ROOT" >&2
exit 1
fi
cp "$HOOK_SRC" "$GIT_HOOK"
chmod +x "$GIT_HOOK"
echo "[install-desktop-git-hooks] pre-push hook 설치됨"
echo " Desktop/Frontend 변경 시 ./scripts/push-with-desktop-version.sh 사용"
+11 -10
View File
@@ -18,10 +18,7 @@ log "WORK_TREE=$WORK_TREE"
cd "$WORK_TREE" cd "$WORK_TREE"
# CI 에서는 BUILD_NUMBER 유무와 관계없이 semver bump (로컬 수동 실행 포함) # Git 동기화 (checkout → git 에 기록된 semver 그대로 빌드)
export DESKTOP_AUTO_BUMP="${DESKTOP_AUTO_BUMP:-1}"
# Git 동기화 (checkout 후 tauri.conf 가 git 버전으로 리셋됨 → bump 필수)
GIT_DIR="${GIT_DIR:-/Volumes/ADATA/git/goldenChart.git}" GIT_DIR="${GIT_DIR:-/Volumes/ADATA/git/goldenChart.git}"
if [[ -d "$GIT_DIR" ]]; then if [[ -d "$GIT_DIR" ]]; then
if git --git-dir="$GIT_DIR" remote get-url origin >/dev/null 2>&1; then if git --git-dir="$GIT_DIR" remote get-url origin >/dev/null 2>&1; then
@@ -54,17 +51,21 @@ fi
export WORK_TREE export WORK_TREE
export BUILD_NUMBER="${BUILD_NUMBER:-}" export BUILD_NUMBER="${BUILD_NUMBER:-}"
export DESKTOP_BUMP_ON_CI="${DESKTOP_BUMP_ON_CI:-1}" # git push 시 bump-desktop-version-for-push.sh 로 올린 semver 를 그대로 빌드
export DESKTOP_BUMP_ON_CI="${DESKTOP_BUMP_ON_CI:-0}"
# mobile pipeline 과 동일: git checkout 직후 semver bump (0.1.18 등 git 구버전 방지) GIT_VER="$(node -p "require('$WORK_TREE/desktop/src-tauri/tauri.conf.json').version" 2>/dev/null || echo '?')"
if [[ -z "${BUMP_VERSION:-}" ]] && [[ "${DESKTOP_BUMP_ON_CI:-1}" == "1" ]]; then log "Desktop build version (git): v${GIT_VER}"
log "CI Desktop version bump..."
if [[ -z "${BUMP_VERSION:-}" ]] && [[ "${DESKTOP_BUMP_ON_CI:-0}" == "1" ]]; then
log "CI Desktop version bump (DESKTOP_BUMP_ON_CI=1)..."
BUMPED="$("$WORK_TREE/scripts/bump-desktop-version-from-release.sh")" BUMPED="$("$WORK_TREE/scripts/bump-desktop-version-from-release.sh")"
export DESKTOP_SKIP_VERSION_BUMP=1 export DESKTOP_SKIP_VERSION_BUMP=1
log "Desktop version → $BUMPED (tauri.conf + package.json)" log "Desktop version → $BUMPED (tauri.conf + package.json)"
else else
BUMPED="$(node -p "require('$WORK_TREE/desktop/src-tauri/tauri.conf.json').version" 2>/dev/null || echo '?')" export DESKTOP_SKIP_VERSION_BUMP=1
log "Desktop version bump skipped — using v$BUMPED" BUMPED="$GIT_VER"
log "Desktop version bump skipped — git v${BUMPED}"
fi fi
"$WORK_TREE/scripts/build-desktop.sh" "${BUILD_ARGS[@]}" "$WORK_TREE/scripts/build-desktop.sh" "${BUILD_ARGS[@]}"
+67
View File
@@ -0,0 +1,67 @@
#!/usr/bin/env bash
# git push + desktop semver 명시 bump (커밋 포함)
#
# Usage:
# ./scripts/push-with-desktop-version.sh [git push 인자...]
# ./scripts/push-with-desktop-version.sh origin main
#
# Env:
# TRIGGER_DESKTOP_BUILD=1 push 후 Jenkins Desktop 빌드 트리거 (기본 1)
# DESKTOP_SKIP_BUMP=1 버전 bump 생략 (이미 올린 경우)
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
cd "$ROOT"
log() { echo "[push-desktop] $*"; }
if ! git diff-index --quiet HEAD --; then
log "ERROR: commit 되지 않은 변경이 있습니다."
log " 1) 코드 변경을 git commit"
log " 2) ./scripts/push-with-desktop-version.sh 실행"
exit 1
fi
REMOTE="${1:-origin}"
BRANCH="${2:-main}"
if [[ $# -ge 1 ]]; then
PUSH_ARGS=("$@")
else
PUSH_ARGS=(origin main)
fi
if [[ "${DESKTOP_SKIP_BUMP:-}" != "1" ]]; then
BEFORE="$("$ROOT/scripts/read-desktop-version.sh")"
NEW_VER="$("$ROOT/scripts/bump-desktop-version-for-push.sh")"
log "Desktop version: v${BEFORE} → v${NEW_VER}"
git add desktop/src-tauri/tauri.conf.json desktop/package.json
if git diff --cached --quiet -- desktop/src-tauri/tauri.conf.json desktop/package.json; then
log "버전 파일 변경 없음 (v${NEW_VER})"
else
git commit -m "$(cat <<EOF
chore(desktop): bump version to v${NEW_VER}
EOF
)"
log "커밋됨: chore(desktop): bump version to v${NEW_VER}"
fi
else
NEW_VER="$("$ROOT/scripts/read-desktop-version.sh")"
log "버전 bump 생략 — v${NEW_VER}"
fi
log "git push ${PUSH_ARGS[*]}"
git push "${PUSH_ARGS[@]}"
if [[ "${TRIGGER_DESKTOP_BUILD:-1}" == "1" ]] && [[ -x "$ROOT/scripts/trigger-desktop-jenkins-build.sh" ]]; then
log "Jenkins Desktop Pipeline 트리거..."
if "$ROOT/scripts/trigger-desktop-jenkins-build.sh"; then
log "Jenkins 빌드 큐 등록 완료 (v${NEW_VER})"
else
log "[WARN] Jenkins 트리거 실패 — 수동으로 goldenChart-Desktop-Pipeline 실행"
fi
fi
log "완료 — 다음 Desktop 빌드 버전: v${NEW_VER}"
+8
View File
@@ -0,0 +1,8 @@
#!/usr/bin/env bash
# desktop/src-tauri/tauri.conf.json semver 출력
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
CONF="${DESKTOP_CONF:-$ROOT/desktop/src-tauri/tauri.conf.json}"
node -p "require(process.argv[1]).version" "$CONF" 2>/dev/null || echo "0.0.0"
+1 -1
View File
@@ -55,8 +55,8 @@ export WORK_TREE="${WORK_TREE}"
export GIT_DIR="${GIT_DIR}" export GIT_DIR="${GIT_DIR}"
export BUILD_NUMBER="\${BUILD_NUMBER}" export BUILD_NUMBER="\${BUILD_NUMBER}"
export DESKTOP_AUTO_BUMP=1 export DESKTOP_AUTO_BUMP=1
export DESKTOP_BUMP_ON_CI=0
export TAURI_SIGNER_KEY="\${TAURI_SIGNER_KEY:-\$HOME/.tauri/goldenchart.key}" export TAURI_SIGNER_KEY="\${TAURI_SIGNER_KEY:-\$HOME/.tauri/goldenchart.key}"
export DESKTOP_BUMP_ON_CI=1
export DESKTOP_DEPLOY_WEB=0 export DESKTOP_DEPLOY_WEB=0
export DESKTOP_UPDATE_BASE_URL="${DESKTOP_UPDATE_BASE_URL:-https://exdev.co.kr/desktop/updates}" export DESKTOP_UPDATE_BASE_URL="${DESKTOP_UPDATE_BASE_URL:-https://exdev.co.kr/desktop/updates}"
"${WORK_TREE}/scripts/jenkins-desktop-pipeline.sh" "${WORK_TREE}/scripts/jenkins-desktop-pipeline.sh"