本文档描述了 Hydra Launcher 的持续集成和持续部署 (CI/CD) 管道。该管道自动化了应用程序在多个平台上的构建、测试和发布。有关 Electron Builder 配置的详细信息,请参阅 Electron Builder 配置。
Hydra 的 CI/CD 管道是使用 GitHub Actions 工作流实现的。主要有三个工作流:
来源: .github/workflows/build.yml .github/workflows/release.yml .github/workflows/lint.yml
构建工作流在每次拉取请求时触发。其主要目的是验证更改可以成功地为所有受支持的平台构建。
yarn build:win 构建应用程序yarn build:linux 构建来源: .github/workflows/build.yml9-90
构建过程使用多个环境变量来为不同环境配置应用程序。在拉取请求时,它使用预发布(staging)API URL
| 可变 | 描述 | 应用场景 |
|---|---|---|
MAIN_VITE_API_URL | 后端服务的 API URL | 主进程 |
MAIN_VITE_AUTH_URL | 认证服务 URL | 主进程 |
MAIN_VITE_CHECKOUT_URL | 结账/支付 URL | 主进程 |
RENDERER_VITE_EXTERNAL_RESOURCES_URL | 外部资源 URL | 渲染进程 |
MAIN_VITE_EXTERNAL_RESOURCES_URL | 外部资源 URL | 主进程 |
RENDERER_VITE_SENTRY_DSN | 用于错误报告的 Sentry DSN | 渲染进程 |
RENDERER_VITE_REAL_DEBRID_REFERRAL_ID | Real-Debrid 推荐 ID | 渲染进程 |
RENDERER_VITE_TORBOX_REFERRAL_CODE | TorBox 推荐代码 | 渲染进程 |
来源: .github/workflows/build.yml47-57 .github/workflows/build.yml62-72 .env.example src/main/vite-env.d.ts src/renderer/src/vite-env.d.ts
构建工作流包含一个将构建产物上传到 S3 兼容存储的步骤,方便开发人员访问和测试拉取请求中的构建。
上传过程由 upload-build.cjs 脚本处理,该脚本执行以下操作:
来源: scripts/upload-build.cjs .github/workflows/build.yml74-84
当更改推送到主分支时,发布工作流被触发。它为所有受支持的平台构建应用程序,并创建一个 GitHub 草稿发布。
发布工作流的步骤与构建工作流类似,但有几个主要区别:
来源: .github/workflows/release.yml11-109
发布过程使用生产环境变量而非预发布(staging)变量
| 可变 | 描述 | 应用场景 |
|---|---|---|
MAIN_VITE_API_URL | 生产 API URL | 主进程 |
MAIN_VITE_AUTH_URL | 生产认证 URL | 主进程 |
MAIN_VITE_CHECKOUT_URL | 生产结账 URL | 主进程 |
RENDERER_VITE_EXTERNAL_RESOURCES_URL | 生产外部资源 URL | 渲染进程 |
MAIN_VITE_EXTERNAL_RESOURCES_URL | 生产外部资源 URL | 主进程 |
RENDERER_VITE_SENTRY_DSN | 用于错误报告的 Sentry DSN | 渲染进程 |
RENDERER_VITE_REAL_DEBRID_REFERRAL_ID | Real-Debrid 推荐 ID | 渲染进程 |
RENDERER_VITE_TORBOX_REFERRAL_CODE | TorBox 推荐代码 | 渲染进程 |
来源: .github/workflows/release.yml49-58 .github/workflows/release.yml63-73
Lint 工作流在拉取请求时触发,并执行代码质量检查。
来源: .github/workflows/lint.yml9-36
CI/CD 管道为不同平台生成各种构建产物
| 文件扩展名 | 平台 | 描述 |
|---|---|---|
.exe | Windows | Windows 安装程序 |
-portable.exe | Windows | Windows 便携式可执行文件 |
.zip | Windows | 压缩的 Windows 构建 |
.deb | Linux | Debian 软件包 |
.rpm | Linux | RPM 软件包 |
.tar.gz | Linux | Tarball 归档 |
.pacman | Linux | Arch Linux 软件包 |
.dmg | macOS | macOS 磁盘映像 |
.yml | 所有 | 用于自动更新的元数据 |
.blockmap | 所有 | 用于自动更新的增量文件 |
来源: .github/workflows/build.yml86-99 .github/workflows/release.yml77-89 .github/workflows/release.yml93-106
下图说明了 CI/CD 管道组件与 Hydra 代码库和外部服务之间的关系:
来源: .github/workflows/build.yml .github/workflows/release.yml .github/workflows/lint.yml scripts/upload-build.cjs
CI/CD 管道依赖于存储在 GitHub 仓库中的几个环境变量和秘密(secrets)
| 秘密 | 描述 |
|---|---|
GITHUB_TOKEN | 由 GitHub Actions 自动提供,用于仓库访问 |
SENTRY_AUTH_TOKEN | 用于 Sentry 错误跟踪集成的认证令牌 |
S3_ENDPOINT | S3 兼容存储的端点 URL |
S3_ACCESS_KEY_ID | S3 兼容存储的访问密钥 |
S3_SECRET_ACCESS_KEY | S3 兼容存储的秘密密钥 |
S3_BUILDS_BUCKET_NAME | 用于存储构建的存储桶名称 |
BUILDS_URL | 访问已上传构建的基础 URL |
BUILD_WEBHOOK_URL | 用于构建通知的 Webhook URL |
| 可变 | 描述 |
|---|---|
MAIN_VITE_API_URL | 生产 API URL |
MAIN_VITE_STAGING_API_URL | 预发布 API URL |
MAIN_VITE_AUTH_URL | 生产认证 URL |
MAIN_VITE_STAGING_AUTH_URL | 预发布认证 URL |
MAIN_VITE_CHECKOUT_URL | 生产结账 URL |
MAIN_VITE_STAGING_CHECKOUT_URL | 预发布结账 URL |
EXTERNAL_RESOURCES_URL | 外部资源 URL |
SENTRY_DSN | 用于错误报告的 Sentry DSN |
RENDERER_VITE_REAL_DEBRID_REFERRAL_ID | Real-Debrid 推荐 ID |
RENDERER_VITE_TORBOX_REFERRAL_CODE | TorBox 推荐代码 |
来源: .github/workflows/build.yml47-57 .github/workflows/build.yml62-72 .env.example
下图说明了 CI/CD 管道中的操作顺序:
来源: .github/workflows/build.yml .github/workflows/release.yml .github/workflows/lint.yml scripts/upload-build.cjs
Hydra Launcher CI/CD 管道确保了应用程序在多个平台上的持续构建、测试和部署。它提供自动代码质量检查、生成构建产物并简化发布流程。
该管道与外部服务集成,例如用于构建产物的 S3 存储、用于构建状态的 webhook 通知以及用于错误跟踪的 Sentry。这种全面的方法有助于为 Hydra Launcher 应用程序保持高代码质量和顺畅的发布流程。