コンテンツにスキップ

リポジトリシークレット

En Parlant~ は GitHub Actions を使用して、Windows、macOS、Linux 向けのリリースバイナリをビルドしています。CI パイプラインには、コード署名、アップデート署名、ウイルススキャン、およびマルチプレイヤーリレー URL のための認証情報が必要です。これらは GitHub リポジトリシークレット として保存されています。GitHub がワークフローの実行時に注入する暗号化された値で、表示されることはありません。

En Parlant~ をフォークして独自の署名付きビルドを作成したい場合は、自分自身のシークレットを設定する必要があります。シークレットがなくてもビルド自体はコンパイルできますが、バイナリは署名されず、アップデートの検証もできず、VirusTotal スキャンステップはスキップされます。

Azure Trusted Signing(Windows コード署名)

Section titled “Azure Trusted Signing(Windows コード署名)”

Windows ユーザーは、署名されていない .exe を実行すると SmartScreen の警告(「Windows によって PC が保護されました」)が表示されます。コード署名によってこの警告を解消し、バイナリが検証済みの発行者から提供されたものであることを Windows に伝えることができます。

En Parlant~ では、この目的で Azure Trusted Signing を使用しています。Tauri のビルドは Windows ビルドステップ中に trusted-signing-cli を呼び出し、Azure と通信して実行ファイルに署名します。

シークレット用途
AZURE_CLIENT_IDサービスプリンシパルのアプリ ID
AZURE_CLIENT_SECRETサービスプリンシパルの認証情報
AZURE_TENANT_IDAzure AD テナント
AZURE_SUBSCRIPTION_IDAzure サブスクリプション
AZURE_CODE_SIGNING_ACCOUNTTrusted Signing アカウント名
AZURE_CODE_SIGNING_ENDPOINTTrusted Signing エンドポイント URL
AZURE_CODE_SIGNING_PROFILE証明書プロファイル名

自分で設定する場合: Azure アカウントを作成し、Trusted Signing リソースをセットアップし、証明書プロファイルを作成し、適切な権限を持つサービスプリンシパルを登録してください。Microsoft の Trusted Signing クイックスタート に手順が記載されています。

スキップした場合: Windows ビルドは動作しますが、ユーザーにはあの恐ろしい青い SmartScreen の死の画面が表示されます。誰もが一度は見たことがあるでしょう。「実行」をクリックして最善を祈った経験は皆さんにもあるはずです。macOS と Linux のビルドには影響しません。

Tauri の組み込みアップデーターは、アップデートが改ざんされたソースではなく正規の発行者から提供されたものであることを検証します。アプリが新しいバージョンをチェックする際、アップデートをダウンロードし、アプリに埋め込まれた公開鍵に対してその署名を検証します。その署名を作成する秘密鍵は CI に保存されています。

シークレット用途
TAURI_PRIVATE_KEYアップデート署名用の Ed25519 秘密鍵
TAURI_KEY_PASSWORD秘密鍵を保護するパスワード

自分で設定する場合: pnpm tauri signer generate でキーペアを生成してください。秘密鍵とパスワードをリポジトリシークレットに設定し、公開鍵を tauri.conf.jsonplugins.updater.pubkey に配置してください。

スキップした場合: アプリは正常にビルドできますが、自動アップデーターは動作しません。ユーザーは新しいバージョンを手動でダウンロードする必要があります。

リリースアーティファクトのビルド後、CI パイプラインはすべてのバイナリ(.exe.dmg.deb.rpm.AppImage)を VirusTotal にアップロードして自動マルウェアスキャンを実行します。これは信頼のシグナルであり、ユーザーは公式ビルドがクリーンであることを確認できます。

シークレット用途
VIRUSTOTAL_API_KEYVirusTotal v3 API の API キー

自分で設定する場合: VirusTotal の無料アカウントを作成し、プロフィールから API キーをコピーしてください。

スキップした場合: VirusTotal スキャンステップはサイレントに失敗します。ビルドは成功し、通常通りリリースされます。自動スキャン結果が得られないだけです。

マルチプレイヤーリレーサーバーの URL はビルド時に注入され、アプリがオンラインゲーム用にどこに接続すべきかを知ることができます。

シークレット用途
VITE_RELAY_URLマルチプレイヤーリレーの WebSocket URL(例: wss://your-relay.fly.dev

自分で設定する場合: 独自のリレーサーバーをデプロイし(マルチプレイヤーサーバーのセットアップガイド を参照)、その公開 URL を設定してください。

スキップした場合: マルチプレイヤーは、実行時にアプリの設定でリレー URL を設定すれば引き続き動作します。このシークレットはデフォルト値を設定するだけなので、ユーザーが手動で設定する必要がなくなります。

シークレットグループ必要な用途スキップ可能か?
Azure(7 つのシークレット)署名付き Windows ビルドはい — ビルドは動作しますが、ユーザーに SmartScreen 警告が表示されます
Tauri(2 つのシークレット)自動アップデーターはい — ビルドは動作しますが、自動アップデートはできません
VirusTotal(1 つのシークレット)マルウェアスキャンレポートはい — ビルドは動作しますが、スキャン結果はありません
リレー URL(1 つのシークレット)デフォルトのマルチプレイヤーサーバーはい — ユーザーがアプリの設定で設定できます

これらのシークレットはいずれも、アプリをローカルでビルド・実行する際には必要ありません。CI/CD のリリースビルドでのみ必要になります。