출시·고도화 중
Tauri 안내서 · 6/6
이 장에서는 배포용 빌드를 만들고, 운영체제별 설치 파일로 묶고, 코드 서명과 자동 업데이트를 붙이는 과정을 다룹니다.
배포 전에 tauri.conf.json의 version과 identifier, 아이콘을 확인합니다. 그다음 빌드 명령 하나로 프런트엔드 빌드(beforeBuildCommand), Rust 최적화 컴파일, 설치 파일 생성을 차례로 실행합니다.
npm run tauri build
# 원하는 설치 파일 종류만 만들기
npm run tauri build -- --bundles deb,appimage
# 설치 파일 없이 실행 파일만(테스트용)
npm run tauri build -- --no-bundle
# 디버그 빌드로 묶어 문제 확인
npm run tauri build -- --debug결과물은 src-tauri/target/release/bundle/ 아래에 형식별 폴더로 생깁니다. 웹 자산은 실행 파일 안에 들어가므로 따로 배포할 파일이 없습니다.
| 운영체제 | 형식 | 비고 |
|---|---|---|
| Windows | .msi(WiX), -setup.exe(NSIS) | MSI는 Windows에서만 만들 수 있음. WebView2 설치 방식 선택 가능 |
| macOS | .app, .dmg | 배포하려면 서명과 공증 필요 |
| Linux | .deb, .rpm, .AppImage | 오래된 배포판에서 빌드해야 호환 범위가 넓음 |
| Android · iOS | .apk · .aab, .ipa | tauri android build, tauri ios build |
종류는 bundle.targets로 정합니다. 교차 컴파일은 제한적이므로, 보통은 각 운영체제에서 따로 빌드합니다. GitHub Actions에서는 공식 tauri-action이 세 운영체제 빌드와 릴리스 업로드를 맡아 줍니다.
name: release
on:
push:
tags: ["v*"]
jobs:
build:
strategy:
matrix:
platform: [windows-latest, macos-latest, ubuntu-22.04]
runs-on: ${{ matrix.platform }}
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: lts/*
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
- name: Linux dependencies
if: matrix.platform == 'ubuntu-22.04'
run: sudo apt-get update && sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf
- name: Install
run: npm install
- name: Build and release
uses: tauri-apps/tauri-action@v0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tagName: ${{ github.ref_name }}
releaseName: "App ${{ github.ref_name }}"
releaseDraft: true서명하지 않은 앱은 Windows SmartScreen이나 macOS Gatekeeper가 경고하거나 막습니다. Windows에서는 코드 서명 인증서를 설치하고 bundle.windows의 certificateThumbprint, digestAlgorithm, timestampUrl을 설정하거나, signCommand로 Azure 같은 외부 서명 도구를 부릅니다. macOS에서는 Apple Developer 계정의 Developer ID 인증서로 서명하고 공증(notarization)까지 받아야 합니다. 환경 변수를 두고 빌드하면 Tauri가 서명과 공증을 진행합니다.
export APPLE_SIGNING_IDENTITY="Developer ID Application: Example Inc (TEAMID)"
export APPLE_API_ISSUER="issuer-id"
export APPLE_API_KEY="key-id"
export APPLE_API_KEY_PATH="/path/to/AuthKey.p8"
npm run tauri buildnpm run tauri add updater로 플러그인을 추가하고 서명 키를 만듭니다. 업데이트 파일은 이 키로 서명되며, 앱은 공개 키로 확인한 업데이트만 설치합니다. 개인 키는 잃어버리면 기존 사용자에게 더 이상 업데이트를 보낼 수 없으므로 안전하게 보관합니다.
npm run tauri signer generate -- -w ~/.tauri/myapp.key
export TAURI_SIGNING_PRIVATE_KEY="$HOME/.tauri/myapp.key"
export TAURI_SIGNING_PRIVATE_KEY_PASSWORD="키 암호"{
"bundle": { "createUpdaterArtifacts": true },
"plugins": {
"updater": {
"pubkey": "공개 키 내용",
"endpoints": ["https://releases.example.com/{{target}}/{{arch}}/{{current_version}}"]
}
}
}capability에 updater:default와 process:default를 넣은 뒤, 앱에서 업데이트를 확인하고 설치합니다.
import { check } from "@tauri-apps/plugin-updater";
import { relaunch } from "@tauri-apps/plugin-process";
const update = await check();
if (update) {
await update.downloadAndInstall();
await relaunch();
}엔드포인트는 정적 JSON 파일이어도 됩니다. tauri-action은 GitHub 릴리스에 latest.json을 올려 주므로 그 주소를 그대로 쓸 수 있습니다. updater는 데스크톱 전용이며, 모바일 앱은 App Store와 Google Play로 배포합니다.
npm run tauri build가 웹 자산을 담은 실행 파일과 설치 파일을 만듭니다..app · .dmg, Linux는 .deb · .rpm · .AppImage로 묶이며, 보통 각 운영체제에서 빌드합니다.공식 문서:
댓글 0개
로그인 · 로그인하면 댓글을 남길 수 있습니다.
첫 댓글을 남겨 보세요.