コンテンツにスキップ

デスクトップアプリ:リリース・署名・自動更新

開発者クレデンシャル関連の作業をカバーします(TODO §D4)。パイプライン 本体は .github/workflows/desktop-release.yml で、desktop-v*タグをpushするとトリガーされます。

ターミナルウィンドウ
cargo tauri signer generate -w ~/.tauri/duduclaw.key
  • 公開鍵(public key)はsrc-tauri/tauri.conf.json > plugins.updater.pubkeyに入れる。
  • 秘密鍵(private key)とパスワードはrepo secrets TAURI_SIGNING_PRIVATE_KEYTAURI_SIGNING_PRIVATE_KEY_PASSWORDに 入れる。

updaterのエンドポイントはGitHub上のlatest.jsonです(設定済み)。リ リースのたびにtauri-actionが署名済みのlatest.jsonを生成し、クライ アントはインストール前に署名を検証、一致しなければインストールを拒否 します(§D4.4)。

2. macOS:Developer IDと公証(notarization)

Section titled “2. macOS:Developer IDと公証(notarization)”

必要なsecrets:

Secret 内容
APPLE_CERTIFICATE Developer ID Applicationの.p12証明書、base64エンコード
APPLE_CERTIFICATE_PASSWORD その証明書のパスワード
APPLE_SIGNING_IDENTITY Developer ID Application: <Name> (<TEAMID>)
APPLE_ID / APPLE_PASSWORD Appleアカウント + app専用パスワード
APPLE_TEAM_ID 10桁のteam id

これらのsecretsが揃っていれば、tauri-actionが(src-tauri/entitlements.plist を使ったhardened runtimeで)署名し、公証も行います。手動でartifactを処 理する場合は scripts/desktop/sign-notarize-macos.sh を使います。

**受け入れ基準(§D4.1):**その証明書に一度も触れたことのないマシンで .dmgをダウンロードし、Gatekeeperの「開発元が未確認」という警告なし に開けること。

必要なsecretsはWINDOWS_CERT_PFX_BASE64WINDOWS_CERT_PASSWORDで す。workflowは scripts/desktop/sign-windows.ps1 経由で.msiに署名します。**受け入れ基準(§D4.2):**SmartScreenにブ ロックされないこと(EV証明書 = 即時信頼)。

.AppImage.debは未署名でビルドされます(WebKitGTKランタイム依存 は宣言済み)。リリースを止める要因にはなりません(§D4.3)。

通常の経路はコアのリリース儀式そのものです。scripts/release.sh <bump>が他の全manifestと一緒にsrc-tauri/tauri.conf.jsonのバージョ ンを上げ、そのbump commitにv<X.Y.Z>desktop-v<X.Y.Z>の両方のtag を打ちます。続いてgit push --tagsがコアのパイプラインと一緒にこのパ イプラインもトリガーします。(デスクトップ版はかつてこれらが別々の手 動ステップだった間、11回のリリースにわたって1.33.0のまま凍結していま した。手動tag付けには絶対に戻らないでください。)

既存バージョンをデスクトップ版だけ再ビルドしたい場合:

ターミナルウィンドウ
git tag desktop-v1.44.0 <bump-commit>
git push origin desktop-v1.44.0

このworkflowは4つのターゲットからなるmatrixをビルドし、署名/公証を 行った上で、インストーラーとlatest.jsonを添えて直接リリースを公 開します(draftを経由しません)。最後のjobがlatest.jsonを固定タ グdesktop-updaterのreleaseにコピーします。この固定URLがupdaterのエ ンドポイントになっているのは、releases/latest/...だとずっと頻繁に 出るコア版のリリースを指してしまい、404になるためです。

  • 証明書/鍵は絶対にcommitしない。GitHub secretsのみに置く。
  • 人員が変わったらApple app専用パスワードとupdater鍵をローテーション する。
  • tauri.conf.jsonのバージョンをコアのCargo.tomlのworkspaceバー ジョンと一致させ、updaterがshellとcoreの不一致な組み合わせを出荷し ないようにする(§D4.4/§D4.5)。