From 3e6e39292019d0fe42497d667ad7f5f347a33dac Mon Sep 17 00:00:00 2001 From: Yun Chan Date: Tue, 21 Jul 2026 15:48:21 +0900 Subject: [PATCH] =?UTF-8?q?ci:=20=EC=B2=AB=20=ED=8C=8C=EC=9D=B4=ED=94=84?= =?UTF-8?q?=EB=9D=BC=EC=9D=B8=20=EC=8B=A4=ED=8C=A8=202=EA=B1=B4=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=E2=80=94=20alpha=20=EC=B1=84=EB=84=90=20?= =?UTF-8?q?=EA=B0=90=EC=A7=80=20=EC=B0=A8=EB=8B=A8=20+=20mac=20sox=20?= =?UTF-8?q?=EC=9E=90=EB=8F=99=20=EC=84=A4=EC=B9=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - detectUpdateChannel:false — prerelease 버전이 alpha.yml을 만들어 latest.yml 글롭/가드에 안 걸리던 문제 (electron-updater 기본 채널 latest와 정렬) - artifacts 글롭 *.yml로 방어적 확장, publish 스크립트 메타데이터 regex 확장 - package-macos: sox 미설치 시 brew install sox 폴백 --- .gitlab-ci.yml | 7 +++++-- apps/desktop/electron-builder.yml | 4 ++++ scripts/ci/publish-gitlab-release.mjs | 4 ++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f9627fd..049fd44 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -111,7 +111,8 @@ package-windows: # expose_as는 와일드카드와 병행 불가라 제거. Artifacts 링크는 Job 페이지에서 접근. paths: - apps/desktop/release/*/*.exe - - apps/desktop/release/*/latest.yml + # latest.yml — detectUpdateChannel:false로 채널 고정. *.yml로 방어적 매치. + - apps/desktop/release/*/*.yml - apps/desktop/release/*/*.blockmap expire_in: 90 days rules: @@ -151,6 +152,8 @@ package-macos: - apps/desktop/sidecar/.venv-ci/bin/pip install -r apps/desktop/sidecar/requirements.txt - apps/desktop/sidecar/.venv-ci/bin/python apps/desktop/scripts/build-sidecar.py # 2) SoX 번들 (brew sox → resources/sox/ 복사 + dylib rpath 재배치) + # runner에 sox 미설치면 user-level brew로 설치 (idempotent) + - command -v sox >/dev/null 2>&1 || brew install sox - bash apps/desktop/scripts/install-sox.sh # 3) Ollama 다운로드 (darwin tgz) - bash apps/desktop/scripts/download-ollama.sh @@ -161,7 +164,7 @@ package-macos: paths: - apps/desktop/release/*/*.dmg - apps/desktop/release/*/*.zip - - apps/desktop/release/*/latest-mac.yml + - apps/desktop/release/*/*.yml - apps/desktop/release/*/*.blockmap expire_in: 90 days rules: diff --git a/apps/desktop/electron-builder.yml b/apps/desktop/electron-builder.yml index 03fadbc..ad392a9 100644 --- a/apps/desktop/electron-builder.yml +++ b/apps/desktop/electron-builder.yml @@ -27,6 +27,10 @@ publish: provider: generic url: "https://gitlab.twentyoz.kr:8443/api/v4/projects/1172/packages/generic/d3ro-voice/latest" +# prerelease 버전(0.1.1-alpha)에서 채널을 "alpha"로 감지해 alpha.yml을 만드는 동작 차단 — +# electron-updater(기본 채널 latest)가 latest.yml을 찾으므로 항상 latest 채널로 고정. +detectUpdateChannel: false + # native 모듈은 asar 외부에 배치 asarUnpack: - "node_modules/better-sqlite3/**" diff --git a/scripts/ci/publish-gitlab-release.mjs b/scripts/ci/publish-gitlab-release.mjs index 78bde58..13aa636 100644 --- a/scripts/ci/publish-gitlab-release.mjs +++ b/scripts/ci/publish-gitlab-release.mjs @@ -31,7 +31,7 @@ if (!/^\d+\.\d+\.\d+(-[0-9A-Za-z.-]+)?$/.test(version)) { const releaseDirectory = fileURLToPath(new URL(`../../apps/desktop/release/${version}/`, import.meta.url)); // 업로드 대상 수집 — 설치파일 + 업데이터 메타데이터만 (unpacked 디렉토리 제외) -const ASSET_PATTERN = /(\.exe|\.dmg|\.zip|\.blockmap|^latest(-mac|-linux)?\.yml)$/; +const ASSET_PATTERN = /(\.exe|\.dmg|\.zip|\.blockmap|^(latest|alpha|beta)(-mac|-linux)?\.yml)$/; const files = []; for (const name of await readdir(releaseDirectory)) { @@ -130,7 +130,7 @@ function safeAssetName(name) { } function isUpdateMetadata(name) { - return /(?:\.blockmap$|^latest(?:-mac|-linux)?\.yml$)/.test(name); + return /(?:\.blockmap$|^(?:latest|alpha|beta)(?:-mac|-linux)?\.yml$)/.test(name); } async function buildDescription() {