버전업데이트 수정
This commit is contained in:
@@ -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",
|
||||||
|
|||||||
Executable
+18
@@ -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"
|
||||||
@@ -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);
|
||||||
|
|||||||
Executable
+64
@@ -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
|
||||||
Executable
+17
@@ -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 사용"
|
||||||
@@ -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[@]}"
|
||||||
|
|||||||
Executable
+67
@@ -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}"
|
||||||
Executable
+8
@@ -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"
|
||||||
@@ -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"
|
||||||
|
|||||||
Reference in New Issue
Block a user