Files
EasyTier/.github/CI.zh-CN.md
T

61 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CI
[English](CI.md)
| 触发方式 | Core | GUI | Mobile |
| --- | --- | --- | --- |
| 目标为 `main`/`develop` 的 PR,或 push 到这两个分支 | Linux x64、Windows x64、macOS ARM64 的 Core/Web `cargo check` | Linux 前端构建和 Rust 检查 | Android ARM64 前端构建和 Rust 检查 |
| Push 到 `releases/**`,或手动触发 | 16 个目标和 Magisk 产物 | 7 个目标的安装包 | 4 个架构的 APK |
Test 运行 CI 脚本测试、fmt、clippy、WASI、Cargo.lock 检查,以及
`easytier`/`easytier-core` 的 Linux 测试(含 `three_node`)。全量模式还逐个
检查 `easytier` 的 feature,排除 `macos-ne`。
Linux 测试使用一个 runner,nextest 总并发度为 32。网络集成测试为每个测试
创建独立的 namespace 和网桥。子网代理用例最多同时运行八个;带宽测试、
使用宿主机全局网络状态的测试和时间敏感的连通性测试优先独占
执行,完成后再运行并发测试。
这四个 workflow 的构建和测试任务跳过 draft PR。普通构建和 Rust 任务可因
无关路径或重复内容而跳过。汇总检查为 `core-result`、`gui-result`、
`mobile-result` 和 `test`。
PR 仅在前端、Core 配置源码、schema 或构建配置变化时构建 Web 前端。
普通分支 push 仍构建 Web 前端。Core 检查独立运行;Web 的嵌入模式仅在
全量构建中编译。
Test 在普通模式下跳过前端构建,测试归档仅构建 Rust 包。
PR 可上传供 CI 内部复用的测试归档。Web 前端仅在全量模式上传。
Core 二进制、GUI 安装包、APK 和 Magisk 产物仅在全量模式上传。编译产物
启用缓存。普通 push 不会取消全量构建。
## 每日构建
定时为北京时间 03:17。对实际存在的 `main`/`develop` 分支,分别检查 Core、
GUI、Mobile、Test:比较分支 HEAD 与该 workflow 最近一次成功的
`workflow_dispatch` 提交,相同则跳过,不同或无成功记录则触发该 workflow。
尚未成功构建的提交在下一轮继续触发。
Nightly 只负责触发,结果见对应 workflow。每日 Core 构建设置
`sign_windows: false`。
## 手动构建与发布
需要仓库 Write 权限。在 Actions 分别运行 Core、GUI、Mobile,选择 PR 分支
即可生成全量产物。该分支必须包含这些 workflow 定义。Fork PR 需要先在本
仓库建立临时分支。
手动 Core 构建默认开启 SignPath 测试签名(`sign_windows: true`)。
全量 macOS GUI 构建会签名和公证。
Release 是独立的手动 workflow。输入的 Core/GUI/Mobile run ID 必须分别来自
正确的 workflow、全量构建成功,且提交相同。它下载这些产物并创建 draft
release。
## 其他 workflow
- OHOS 独立运行。相关 PR 运行桥接单测,并检查宿主平台和 ARM64 OHOS 的绑定。
非 PR 构建生成并上传 HAR;发布和下游构建仍按原有主线/手动触发条件执行。
- Go、JavaScript Hosts、Nix 使用各自的路径过滤。
- Docker 手动触发,下载指定 Core 构建的产物并推送镜像。