跳转到内容

仓库密钥

En Parlant~ 使用 GitHub Actions 为 Windows、macOS 和 Linux 构建发布二进制文件。CI 流水线需要用于代码签名、更新签名、病毒扫描和多人游戏中继 URL 的凭据。这些凭据以 GitHub 仓库密钥 的形式存储——GitHub 会将这些加密值注入工作流运行环境中,但不会显示它们。

如果你 fork 了 En Parlant~ 并希望生成自己的签名构建,你需要配置自己的密钥。即使没有这些密钥,构建仍然可以编译,但二进制文件不会被签名,更新无法验证,VirusTotal 扫描步骤也会被跳过。

Azure Trusted Signing(Windows 代码签名)

Section titled “Azure Trusted Signing(Windows 代码签名)”

Windows 用户在运行未签名的 .exe 时会看到 SmartScreen 警告(“Windows 已保护你的电脑”)。代码签名可以消除该警告,并向 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 发布构建中才有意义。