ci(release): build and verify the STT sidecar in every packaging pipeline

Packaging silently tolerates a missing resource directory: electron-builder
prints "file source doesn't exist" and continues, which is how installers that
could not transcribe were published.

Every pipeline that packages the desktop app now builds the sidecar and fails
when the engine or its VAD data is absent, so a release cannot ship without
local transcription.
This commit is contained in:
Yun Chan 2026-09-18 00:50:33 +09:00
parent 2d585bfc29
commit 8488703b3c
4 changed files with 39 additions and 7 deletions

View file

@ -41,6 +41,14 @@ jobs:
- name: 의존성 설치 - name: 의존성 설치
run: npm ci run: npm ci
- name: STT 사이드카 빌드 (로컬 전사 엔진)
run: |
# 로컬 전사는 faster-whisper 사이드카에 의존한다. 이 번들이 빠지면
# 설치본에서 전사가 전혀 동작하지 않으므로 패키징 전에 반드시 빌드/검증한다.
npm run sidecar:setup --workspace=@d3ro/desktop
npm run sidecar:build --workspace=@d3ro/desktop
node scripts/ci/verify-sidecar-bundle.mjs
- name: 데스크톱 빌드 (서명 필수) - name: 데스크톱 빌드 (서명 필수)
env: env:
WIN_CSC_LINK: "${{ secrets.WIN_CSC_LINK }}" WIN_CSC_LINK: "${{ secrets.WIN_CSC_LINK }}"

View file

@ -48,15 +48,14 @@ jobs:
working-directory: apps/desktop working-directory: apps/desktop
run: bash scripts/install-sox.sh run: bash scripts/install-sox.sh
- name: Install Python dependencies - name: Build STT sidecar (PyInstaller)
working-directory: apps/desktop working-directory: apps/desktop
run: | run: |
pip install pyinstaller # 로컬 전사는 사이드카 번들에 의존한다. 누락된 채 패키징하면 설치본에서
pip install -r sidecar/requirements.txt # 전사가 전혀 동작하지 않으므로 빌드 후 반드시 검증한다.
npm run sidecar:setup
- name: Build sidecar (PyInstaller) npm run sidecar:build
working-directory: apps/desktop node ../../scripts/ci/verify-sidecar-bundle.mjs
run: python scripts/build-sidecar.py
- name: Rebuild native modules for Electron - name: Rebuild native modules for Electron
run: npx --yes @electron/rebuild@3 --version=33.4.11 run: npx --yes @electron/rebuild@3 --version=33.4.11

View file

@ -36,6 +36,13 @@ jobs:
trusted-signing-account-name: ${{ secrets.AZURE_SIGNING_ACCOUNT }} trusted-signing-account-name: ${{ secrets.AZURE_SIGNING_ACCOUNT }}
certificate-profile-name: ${{ secrets.AZURE_CERT_PROFILE }} certificate-profile-name: ${{ secrets.AZURE_CERT_PROFILE }}
- name: Build STT Sidecar (local transcription engine)
run: |
# Without this bundle the packaged app cannot transcribe at all.
npm run sidecar:setup --workspace=@d3ro/desktop
npm run sidecar:build --workspace=@d3ro/desktop
node scripts/ci/verify-sidecar-bundle.mjs
- name: Build and Package Windows (NSIS + RFC 3161 TSA) - name: Build and Package Windows (NSIS + RFC 3161 TSA)
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View file

@ -109,6 +109,15 @@ jobs:
npm run typecheck npm run typecheck
npm run build --workspace=@d3ro/desktop npm run build --workspace=@d3ro/desktop
- name: Build STT Sidecar (local transcription engine)
run: |
# Local transcription depends on the faster-whisper sidecar; a release
# that ships without it cannot transcribe at all, so build and verify
# the bundle before packaging.
npm run sidecar:setup --workspace=@d3ro/desktop
npm run sidecar:build --workspace=@d3ro/desktop
node scripts/ci/verify-sidecar-bundle.mjs
- name: Package with Electron Builder (NSIS x64) - name: Package with Electron Builder (NSIS x64)
shell: pwsh shell: pwsh
run: | run: |
@ -179,6 +188,15 @@ jobs:
npm run typecheck npm run typecheck
npm run build --workspace=@d3ro/desktop npm run build --workspace=@d3ro/desktop
- name: Build STT Sidecar (local transcription engine)
run: |
# Local transcription depends on the faster-whisper sidecar; a release
# that ships without it cannot transcribe at all, so build and verify
# the bundle before packaging.
npm run sidecar:setup --workspace=@d3ro/desktop
npm run sidecar:build --workspace=@d3ro/desktop
node scripts/ci/verify-sidecar-bundle.mjs
- name: Package with Electron Builder (DMG & ZIP arm64) - name: Package with Electron Builder (DMG & ZIP arm64)
run: | run: |
cd apps/desktop cd apps/desktop