ci: 첫 파이프라인 실패 2건 수정 — alpha 채널 감지 차단 + mac sox 자동 설치
Some checks failed
Build macOS / Build & Package (macOS) (push) Failing after 5s
Build macOS / Build & Package (macOS)-1 (push) Failing after 3s

- detectUpdateChannel:false — prerelease 버전이 alpha.yml을 만들어 latest.yml
  글롭/가드에 안 걸리던 문제 (electron-updater 기본 채널 latest와 정렬)
- artifacts 글롭 *.yml로 방어적 확장, publish 스크립트 메타데이터 regex 확장
- package-macos: sox 미설치 시 brew install sox 폴백
This commit is contained in:
Yun Chan 2026-07-21 15:48:21 +09:00
parent c6fd8c9a9a
commit 3e6e392920
3 changed files with 11 additions and 4 deletions

View file

@ -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:

View file

@ -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/**"

View file

@ -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() {