菜单

构建与部署

相关源文件

本文档涵盖了 Hydra 启动器的构建和部署系统,包括 CI/CD 流水线架构、多平台构建流程、制品管理和分发渠道。该系统可自动化在 Windows 和 Linux 平台上构建、测试和分发 Electron 应用程序包。

有关特定 CI/CD 工作流和自动化的详细信息,请参阅CI/CD 流水线。有关应用程序打包配置和平台特定构建详情,请参阅应用程序打包

构建系统架构

构建和部署系统围绕 GitHub Actions 工作流构建,用于处理软件生命周期的不同阶段。该系统支持由拉取请求触发的开发构建以及由主分支提交触发的生产版本发布。

来源: .github/workflows/build.yml1-103 .github/workflows/release.yml1-123 .github/workflows/lint.yml1-36

多平台构建矩阵

构建系统采用矩阵策略,以同时支持多个操作系统。每个平台都有特定的构建命令和制品类型。

构建矩阵配置确保了跨平台构建的一致性,同时允许进行平台特定优化和包格式调整。

来源: .github/workflows/build.yml11-16 .github/workflows/release.yml12-16

环境配置

构建系统依赖于广泛的环境变量配置,以针对不同的部署环境定制构建。变量根据其目标进程和功能进行分类。

变量类别变量目的
API 配置MAIN_VITE_API_URL, MAIN_VITE_AUTH_URL, MAIN_VITE_CHECKOUT_URL, MAIN_VITE_WS_URL配置主进程的 API 端点
外部资源RENDERER_VITE_EXTERNAL_RESOURCES_URL, MAIN_VITE_EXTERNAL_RESOURCES_URL资产和资源 URL
错误跟踪SENTRY_AUTH_TOKEN, RENDERER_VITE_SENTRY_DSN用于错误监控的 Sentry 集成
合作伙伴集成RENDERER_VITE_REAL_DEBRID_REFERRAL_ID, RENDERER_VITE_TORBOX_REFERRAL_CODE下载服务推荐码
构建基础设施GITHUB_TOKEN, S3_ENDPOINT, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY认证和上传凭据

暂存构建(由拉取请求触发)和生产构建(由主分支提交触发)之间的环境变量配置有所不同,其中暂存构建使用 STAGING_ 前缀的变量。

来源: .github/workflows/build.yml48-74 .github/workflows/release.yml48-75 src/main/vite-env.d.ts3-14 src/renderer/src/vite-env.d.ts4-13

分发和制品管理

构建制品通过多个渠道分发,并采用自动化上传流程。该系统同时处理临时开发构建和永久版本发布。

upload-build.cjs 脚本处理基于时间戳命名和自动过期的选择性制品上传。只有特定文件扩展名的制品会上传到 S3,而所有制品都保留在 GitHub releases 和 Actions artifacts 中。

来源: scripts/upload-build.cjs1-67 .github/workflows/build.yml76-102 .github/workflows/release.yml105-122

Python RPC 构建集成

构建过程包含一个关键步骤,即使用 cx_Freeze 构建 Python RPC 服务器组件。此组件提供下载管理和种子处理的后端服务。

Python RPC 组件必须在 Electron 应用程序之前构建,以确保后端服务正确打包到最终应用程序包中。

来源: .github/workflows/build.yml30-40 .github/workflows/release.yml31-40

构建工作流编排

构建系统针对不同的触发器实现了不同的工作流,并具有复杂的并发控制和故障处理策略。

工作流触发器并发组失败策略
lint.yml拉取请求${{ github.workflow }}-${{ github.ref }}单个作业,取消进行中的作业
build.yml拉取请求${{ github.workflow }}-${{ github.ref }}带有 fail-fast: false 的矩阵
release.yml主分支推送${{ github.workflow }}-${{ github.ref }}不带 fail-fast 的矩阵

并发控制确保每个分支每次只有一个工作流运行,在新提交推送时自动取消之前的运行。矩阵策略允许跨平台并行构建,同时保持独立的故障域。

来源: .github/workflows/lint.yml3-8 .github/workflows/build.yml3-14 .github/workflows/release.yml3-16