feat(release): switchboard 릴리스 체계 이식 — Mac 배포 + Registry 게시 + 자동 업데이트
- package-macos CI job: arm64 무서명(ad-hoc) dmg+zip, D3RO_MAC_RUNNER 변수 게이트 - sync-version.mjs: 태그 → package.json 버전 동기화 - publish-gitlab-release.mjs: Generic Package Registry(버전별+latest) 업로드 + Release 생성 - electron-builder: publish generic(latest.yml 생성), 공백 없는 artifactName, mac arm64 단일화 - UpdateService: electron-updater 4h 주기 체크 + 재시작 다이얼로그 (update-feed.ts SSOT) - @rollup/rollup-win32-x64-msvc → optionalDependencies (mac npm ci EBADPLATFORM 해소) - docs/deployment/release-guide.md: runner 등록·feed 설정·파일명 규칙 가이드 리뷰 워크플로(3관점 적대적 검증)로 확정된 결함 8건 반영: publish 부재로 latest.yml 미생성, 파일명 공백 vs 레지스트리 404, mac EBADPLATFORM, needs optional의 실패 미커버, DELETE 권한 의존, CHANGELOG regex 경계, --arm64 무시, 다이얼로그 parent 부재
This commit is contained in:
parent
8f7d300b89
commit
3beba99668
11 changed files with 776 additions and 2291 deletions
|
|
@ -15,6 +15,18 @@ files:
|
|||
- out/**/*
|
||||
- "!out/**/*.map"
|
||||
|
||||
# ────────────────────────────────────────────────────────────────────
|
||||
# 자동 업데이트 feed — 이 설정이 있어야 electron-builder가
|
||||
# latest.yml / latest-mac.yml (update info)를 생성한다.
|
||||
# generic provider는 파일 생성만 트리거하고 직접 업로드는 하지 않음
|
||||
# (업로드는 scripts/ci/publish-gitlab-release.mjs 담당).
|
||||
# 첫 릴리스 후 projects/0을 실제 프로젝트 ID로 교체할 것 —
|
||||
# src/main/update-feed.ts의 UPDATE_FEED_URL과 반드시 동일 값 유지.
|
||||
# ────────────────────────────────────────────────────────────────────
|
||||
publish:
|
||||
provider: generic
|
||||
url: "https://gitlab.twentyoz.kr:8443/api/v4/projects/0/packages/generic/d3ro-voice/latest"
|
||||
|
||||
# native 모듈은 asar 외부에 배치
|
||||
asarUnpack:
|
||||
- "node_modules/better-sqlite3/**"
|
||||
|
|
@ -37,15 +49,18 @@ win:
|
|||
# ────────────────────────────────────────────────────────────────────
|
||||
mac:
|
||||
category: public.app-category.productivity
|
||||
# 파일명 공백 금지 — GitLab Generic Package Registry가 공백을 불허해
|
||||
# latest-mac.yml의 url과 레지스트리 업로드명이 어긋나면 업데이트 다운로드 404.
|
||||
artifactName: "D3RO-Voice-${version}-${arch}.${ext}"
|
||||
# x64 제외 — 사이드카(PyInstaller)가 arm64 전용이라 x64 산출물은 깨진 빌드가 됨.
|
||||
# Intel Mac 수요 발생 시 x64 runner에서 별도 빌드.
|
||||
target:
|
||||
- target: dmg
|
||||
arch:
|
||||
- arm64
|
||||
- x64
|
||||
- target: zip
|
||||
arch:
|
||||
- arm64
|
||||
- x64
|
||||
hardenedRuntime: true
|
||||
gatekeeperAssess: false
|
||||
entitlements: build/entitlements.mac.plist
|
||||
|
|
@ -104,6 +119,8 @@ extraResources:
|
|||
- "**/*"
|
||||
|
||||
nsis:
|
||||
# 파일명 공백 금지 — mac.artifactName 주석과 동일한 이유 (latest.yml url 정합)
|
||||
artifactName: "D3RO-Voice-Setup-${version}-${arch}.${ext}"
|
||||
# oneClick=false + perMachine=false 조합이 System.dll 0xc0000005 크래시 사례(#7921).
|
||||
# 사내 테스트 단계에선 oneClick=true로 전환하여 크래시 경로 회피.
|
||||
oneClick: true
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue