Tauri 앱 게시하기

이 가이드는 Tauri 2 앱을 아무것도 없는 상태에서 시작해, 설치된 앱이 업데이트하는 게시 릴리스까지 안내합니다.

1. 켜고 앱 설정하기

  1. 워크스페이스의 Products에서 Desktop releases를 켭니다. 릴리스 페이지를 쓰려면 Help center도 켭니다.

  2. 프로젝트를 열고 Desktop releases로 이동해 Set up a desktop app을 선택합니다. 플랫폼이 Desktop인 기존 앱을 고르거나 새 앱의 이름을 입력합니다.

  3. 업데이터 키 쌍을 한 번 만들고 개인 키를 안전하게 보관합니다. 이 키가 없으면 설치된 앱에 업데이트를 전달할 수 없습니다.

    npm run tauri signer generate -- -w ~/.tauri/myapp.key

    .pub 파일의 내용을 Updater public key에 붙여 넣습니다. 지금 넣어도 되고 나중에 Setup에서 넣어도 됩니다. 키가 있기 전까지 Mocco는 업데이트 번들을 받지 않습니다.

데스크톱 앱 설정하기

2. 업데이터가 Mocco를 가리키게 하기

앱에 업데이터 플러그인(tauri-plugin-updater)을 추가합니다. 버전은 정확히 고정하고 updater:default 권한을 함께 설정합니다. 그런 다음 Setup에 표시된 블록을 tauri.conf.json에 복사합니다.

{
  "bundle": { "createUpdaterArtifacts": true },
  "plugins": {
    "updater": {
      "pubkey": "<your .pub content>",
      "endpoints": [
        "https://www.mocco.club/api/ext/v1/desktop/apps/<app id>/updates/{{target}}/{{arch}}/{{current_version}}?channel=stable"
      ]
    }
  }
}

엔드포인트는 모든 빌드에 컴파일되어 들어가므로 Setup에 표시된 값을 그대로 사용하세요. 앱을 시작할 때(또는 메뉴 항목에서) 업데이트를 확인하고, download_and_install 전에 사용자에게 묻고, 설치 후 다시 시작하세요. 확인은 Rust에서 실행되므로 웹뷰의 콘텐츠 보안 정책을 바꿀 필요가 없습니다.

3. CI에 키 주기

API keys에서 desktop:write 스코프의 secret API 키를 만들고, 저장소 시크릿 MOCCO_API_KEY로 저장합니다. Tauri 서명 키와 비밀번호도 CI 시크릿(TAURI_SIGNING_PRIVATE_KEY, TAURI_SIGNING_PRIVATE_KEY_PASSWORD)으로 저장해야 빌드가 업데이트 번들에 서명할 수 있습니다.

4. 릴리스 단계 추가하기

빌드가 설치 파일과 업데이트 번들을 패키징하고 서명한 뒤에 다음을 추가합니다.

- name: Publish to Mocco
  uses: fi-workers/mocco/actions/desktop-publish@<commit sha>
  with:
    app-id: <app id>
    version: ${{ steps.version.outputs.version }}
    notes-file: RELEASE_NOTES.md
    artifacts: |
      darwin-aarch64 installer release/App_${{ steps.version.outputs.version }}_aarch64.dmg
      darwin-aarch64 updater   release/App_${{ steps.version.outputs.version }}_aarch64.app.tar.gz
    channel: stable
  env:
    MOCCO_API_KEY: ${{ secrets.MOCCO_API_KEY }}

파일마다 한 줄씩 적습니다. 플랫폼, installer 또는 updater, 경로 순서입니다. 업데이트 번들의 .sig 파일(Tauri가 생성합니다)이 번들 옆에 있어야 합니다. Action은 커밋으로 고정하세요. Action은 같은 커밋에서 Mocco CLI를 빌드하므로 npm에서 설치하는 것이 없습니다. channel을 생략하면 초안 상태에서 멈추고, 콘솔에서 게시할 수 있습니다. GitHub Actions를 쓰지 않나요? curl로 게시하기를 참고하세요.

5. 릴리스하기

버전을 올리는 변경을 머지합니다. 작업이 파일을 올리고, Mocco가 검증을 마칠 때까지 기다린 뒤, stable에 게시하고 다운로드 링크를 출력합니다. 콘솔에서 릴리스는 Verifying, Draft, Published 순으로 표시됩니다.

앱의 릴리스 목록: 각 릴리스를 제공하는 채널과 공개 링크

파일이 검증에 실패하면 릴리스는 Failed가 되고, 파일과 이유(잘못된 SHA-256, 다른 키로 만든 서명 등)가 표시됩니다. 빌드를 고치고 같은 버전으로 작업을 다시 실행하세요. 새로 올린 파일이 실패한 파일을 대체합니다.

게시했거나 회수한 버전은 바꿀 수 없습니다. 대신 버전을 올리세요.

6. 공유하기

  • 릴리스 페이지는 프로젝트의 공개 사이트 /releases에 있습니다. 플랫폼별 다운로드 버튼과 모든 버전의 노트가 사이트의 언어로 표시됩니다. 각 버전의 페이지는 /releases/<version>입니다.

  • 플랫폼별 다운로드 링크(…/latest/<platform>, Public links 아래에 표시)는 항상 최신 설치 파일로 연결됩니다. 웹사이트에 넣어 두세요.

공개 릴리스 페이지

설치된 앱은 다음 확인 때 새 버전을 발견하고, 사용자에게 물은 뒤 설치합니다.

문제가 있는 릴리스 회수하기

릴리스를 열고 사유를 입력한 뒤 Yank를 선택합니다. 다운로드가 즉시 중단되고("gone"으로 응답), 채널은 이전에 제공하던 버전으로 돌아갑니다. 이미 설치한 앱은 그 버전을 유지하므로, 수정한 새 버전을 게시해야 합니다. Yank는 되돌릴 수 없습니다.

스토리지 관리하기

기본값은 모든 빌드를 보관하는 것입니다. Setup → Retention에서 소유자와 관리자는 마지막 변경 후 일정 기간이 지난 실패한 업로드와 초안을 삭제하도록 설정할 수 있습니다. 게시된 버전과 회수된 버전은 건드리지 않습니다. 이 설정 화면에는 앱의 빌드가 현재 차지하는 용량도 표시됩니다.

데스크톱 앱의 Setup: 업데이터 블록, 워크플로 단계, 키, 보관 기간