Skip to content

Commit 11157a1

Browse files
committed
docs(cheatsheet): 添加GitHub Actions实用指南和测试相关文档
添加两份GitHub Actions实用指南文档: 1. 测试领域实用Actions推荐清单,涵盖结果可视化、前端测试、移动端测试等场景 2. 通用及语言专用Actions推荐清单,包含Node.js、Python、Go等语言的最佳实践
1 parent ef06d74 commit 11157a1

2 files changed

Lines changed: 228 additions & 0 deletions

File tree

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
在测试领域,实用的 GitHub Actions 重点在于**结果可视化****环境配置自动化**以及**不仅限于单元测试的扩展能力**(如性能、安全、视觉测试)。
2+
3+
以下是 2024-2025 年测试领域最实用的 Actions 推荐清单:
4+
5+
### 📊 1. 结果可视化 & 报告 (通用推荐)
6+
7+
GitHub 原生的测试日志很难看,这两个工具能把测试结果变成漂亮的图形化报表,直接展示在 PR 的 "Files changed" 或 Summary 页面中。
8+
9+
* **`dorny/test-reporter`**
10+
* **作用:** 解析 JUnit XML 等格式的测试报告,并在 GitHub 中生成专门的 "Test Report" Check Run 页面。
11+
* **适用:** Java (JUnit), JS (Jest/Mocha), Python (Pytest), Go, .NET 等所有能生成 XML 报告的框架。
12+
* **为何实用:** 让你不用翻阅几千行 Console 日志就能一眼看到哪几个测试挂了。
13+
14+
* **`ctrf-io/github-test-reporter`** (🔥 新星推荐)
15+
* **作用:** 现代化的测试报告工具,除了生成 Summary,还专注于 **Flaky Test (不稳定测试) 检测**
16+
* **为何实用:** 它可以自动统计测试历史,告诉你“这个测试挂了是因为代码烂,还是因为它本来就是随机挂的”,对 CI 稳定性维护极有帮助。
17+
18+
---
19+
20+
### 🌐 2. 前端 & E2E 测试 (Web)
21+
22+
* **`cypress-io/github-action`**
23+
* **作用:** 官方维护的 Action,一键运行 Cypress。
24+
* **为何实用:** **省心**。它内置了复杂的 npm 依赖缓存逻辑和浏览器环境配置。支持 `parallel: true` 参数,配合 Cypress Cloud 可以轻松实现多台机器并行跑测试,大幅缩短 E2E 时间。
25+
26+
* **Playwright (直接使用 CLI)**
27+
* **点评:** 相比于官方 Action,Playwright 社区更推荐直接用 `npx playwright test` 配合 `actions/upload-artifact`
28+
* **实用技巧:** 配置 `shard` 参数实现分片运行(GitHub Actions 免费并行额度通常有 20 个并发),这是目前最经济的 E2E 加速方案。
29+
30+
* **`percy/percy-action`****`chromaui/action`**
31+
* **作用:** **视觉回归测试 (Visual Regression Testing)**
32+
* **为何实用:** 单元测试测不出 CSS 样式崩坏。Percy (BrowserStack 旗下) 和 Chromatic (Storybook 团队) 能在每次 PR 时截图对比,像素级发现 UI 变化(比如按钮位置偏了 1px)。
33+
34+
---
35+
36+
### 📱 3. 移动端测试 (Mobile)
37+
38+
* **`mobile-dev-inc/action-maestro`** (Maestro)
39+
* **作用:** 运行 Android/iOS UI 测试。
40+
* **为何实用:** 相比老牌的 Appium,Maestro 使用 YAML 编写测试流程,极其简单且稳定。这个 Action 能帮你自动设置安卓模拟器环境,解决了 GitHub Runner 上配置移动端环境的噩梦。
41+
42+
---
43+
44+
### 🚀 4. 性能 & 负载测试
45+
46+
不要等到上线才发现服务扛不住。
47+
48+
* **`grafana/k6-action`**
49+
* **作用:** 运行 k6 负载测试脚本。
50+
* **为何实用:** 支持将性能数据推送到 Grafana Cloud 进行实时监控。可以在 PR 中设定阈值(例如:如果 P95 延迟超过 500ms,则 CI 失败),防止性能劣化代码合入。
51+
52+
---
53+
54+
### 🛡️ 5. 安全测试 (DevSecOps)
55+
56+
把安全扫描当作一种“测试”。
57+
58+
* **`zaproxy/action-baseline`** (OWASP ZAP)
59+
* **作用:** 动态应用安全测试 (DAST)。
60+
* **为何实用:** 启动你的应用,然后用 ZAP 爬虫去扫,自动发现 SQL 注入、XSS 等常见漏洞。Baseline 模式运行快,适合 CI 集成。
61+
62+
* **`snyk/actions`**
63+
* **作用:** 扫描依赖包漏洞。
64+
* **为何实用:** 如果你的 `package.json``go.mod` 里引用的库有已知的严重漏洞,它会直接阻断 PR。
65+
66+
---
67+
68+
### 🛠️ 6. 语言专项测试增强 (Rust/Go/Pwsh)
69+
70+
针对你提到的技术栈的补充:
71+
72+
* **Rust: `maidsafe/cargo-nextest`**
73+
* **为何实用:** `cargo test` 在大型项目中太慢了。`nextest` 是一个并行的 Test Runner,速度快得多,且输出更利于阅读。这个 Action 帮你免去安装二进制的麻烦。
74+
* *配合使用:* `Swatinem/rust-cache` (必装)。
75+
76+
* **Go: `robherley/go-test-action`**
77+
* **为何实用:** Go 原生的 `go test` 输出是纯文本,不好看。这个 Action 给测试结果加上了注解(Annotations),失败的代码行会直接在 PR 的 File Changes 界面被高亮标红。
78+
79+
* **PowerShell: `zyborg/pester-tests-report`**
80+
* **为何实用:** 专门为 Pester (PowerShell 测试框架) 设计的报告工具。PowerShell 测试通常输出很长,这个工具能生成简洁的 Markdown 摘要并在 Job Summary 中展示。
81+
82+
### 💡 最佳实践建议
83+
84+
在配置测试 Action 时,务必记得**分离 "Build" 和 "Test" 任务**,或者利用 GitHub 的 **Matrix** 策略:
85+
86+
```yaml
87+
# 示例:矩阵测试,这是 GitHub Actions 测试最强大的地方
88+
jobs:
89+
test:
90+
runs-on: ubuntu-latest
91+
strategy:
92+
matrix:
93+
node: [18, 20]
94+
browser: [chromium, firefox] # 同时测试不同 Node 版本和浏览器
95+
steps:
96+
- uses: actions/checkout@v4
97+
- uses: actions/setup-node@v4
98+
with:
99+
node-version: ${{ matrix.node }}
100+
- run: npm test -- --browser=${{ matrix.browser }}
101+
```
Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
GitHub Actions 生态非常丰富。针对 **Node.js, Python, Go, Rust, PowerShell (pwsh)** 这几个技术栈,我整理了一份目前(2024-2025年视角)最实用、维护最积极的 Actions 推荐清单。
2+
3+
我们将清单分为 **通用型****语言专用型** 两部分。
4+
5+
---
6+
7+
### 🟢 1. 必装/通用型 (所有语言适用)
8+
9+
无论你用什么语言,这些 Action 几乎是 CI/CD 流水线的标配:
10+
11+
* **`actions/checkout`**
12+
* **作用:** 拉取代码。
13+
* **点评:** 官方核心 Action,V4 版本是目前的标准。
14+
* **`actions/cache`**
15+
* **作用:** 缓存依赖(node_modules, pip cache, cargo target 等),显著加速构建。
16+
* **点评:** 必须掌握。注:现在很多 setup-xyz 的 Action 都内置了 cache 参数,可以简化配置。
17+
* **`softprops/action-gh-release`**
18+
* **作用:** 自动发布 GitHub Release,上传二进制文件/制品。
19+
* **点评:** 比官方的 `create-release` (已废弃) 更好用,支持多文件上传和 Changelog 生成。
20+
* **`docker/build-push-action` & `docker/login-action`**
21+
* **作用:** 构建 Docker 镜像并推送到 DockerHub/GHCR。
22+
* **点评:** 容器化部署的标配。
23+
* **`codecov/codecov-action`**
24+
* **作用:** 上传测试覆盖率报告到 Codecov 平台。
25+
* **点评:** 想要那个绿色的 "coverage 90%" 徽章吗?用它。
26+
27+
---
28+
29+
### 🟡 2. Node.js 开发者的瑞士军刀
30+
31+
Node.js 的依赖安装通常较慢,优化重点在于缓存。
32+
33+
* **`actions/setup-node`**
34+
* **实用技巧:** 使用 `cache` 参数自动处理 npm/yarn/pnpm 缓存,无需手写 `actions/cache`
35+
36+
```yaml
37+
- uses: actions/setup-node@v4
38+
with:
39+
node-version: '20'
40+
cache: 'npm' # 或 'pnpm', 'yarn'
41+
```
42+
43+
* **`pnpm/action-setup`**
44+
* **作用:** 专门用于安装 pnpm 包管理器。
45+
* **点评:** 如果你的项目用 pnpm,必须配合这个使用。
46+
* **`ossjs/release-it`** (配合 NPM Script) 或 **`changesets/action`**
47+
* **作用:** 自动化版本管理和发布到 NPM。
48+
* **点评:** 如果你是维护开源库,`changesets` 是目前管理 Monorepo 版本发布的最佳实践。
49+
50+
---
51+
52+
### 🔵 3. Python 开发者必备
53+
54+
Python 的痛点在于环境隔离和依赖工具多样(pip, poetry, pipenv)。
55+
56+
* **`actions/setup-python`**
57+
* **实用技巧:** 同样支持 `cache: 'pip'` 或 `cache: 'poetry'`。
58+
* **`snok/install-poetry`**
59+
* **作用:** 如果你用 Poetry 管理依赖,这是目前体验最好的安装 Action。
60+
* **点评:** 支持虚拟环境缓存配置,比直接 pip install poetry 更稳健。
61+
* **`pre-commit/action`**
62+
* **作用:** 在 CI 中运行 `.pre-commit-config.yaml` 定义的检查。
63+
* **点评:** 一次性跑完 Black, Isort, Flake8,保持 CI 和本地钩子一致。
64+
65+
---
66+
67+
### 🐹 4. Go 开发者神器
68+
69+
Go 的构建速度通常很快,重点在于 Lint 和 Release。
70+
71+
* **`actions/setup-go`**
72+
* **实用技巧:** 使用 `cache: true` 开启构建缓存。
73+
* **`golangci/golangci-lint-action`**
74+
* **作用:** 运行 Go 社区最强的 Linter 集合。
75+
* **点评:** 极其强大,能在 PR 中直接针对代码行进行评论(Annotations),比手动跑命令优雅得多。
76+
* **`goreleaser/goreleaser-action`**
77+
* **作用:** Go 语言发布的终极方案。
78+
* **点评:** 自动交叉编译(Windows/Linux/Mac)、打包、签名、上传 Release、推 Docker 镜像、更新 Homebrew Tap。Go 项目必装。
79+
80+
---
81+
82+
### 🦀 5. Rust 开发者救星
83+
84+
Rust 的痛点是 **编译极慢**。如果不用缓存,你的 Actions 额度会迅速耗尽。
85+
86+
* **`dtolnay/rust-toolchain`**
87+
* **作用:** 安装 Rust 工具链(stable/nightly/beta)。
88+
* **点评:** **不要用** 已经没人维护的 `actions-rs/toolchain`。`dtolnay` 是 Rust 宏的大佬,他的这个 Action 是目前事实上的标准。
89+
* **`Swatinem/rust-cache`**
90+
* **作用:** 智能缓存 `target/` 和 `~/.cargo`。
91+
* **点评:** **最重要的 Rust Action**。它比通用的 `actions/cache` 更懂 Rust 的哈希键值计算,能极大节省编译时间。
92+
* **`taiki-e/install-action`**
93+
* **作用:** 安装二进制工具(如 `cargo-nextest`, `cargo-audit`)而不需从源码编译。
94+
* **点评:** 比如你想用 `cargo-nextest` 加速测试,如果用 `cargo install` 会编译很久,用这个直接下二进制,秒装。
95+
96+
---
97+
98+
### ⚙️ 6. PowerShell (Pwsh) 自动化
99+
100+
PowerShell Core (pwsh) 是跨平台的,这些 Action 帮你编写更好的脚本。
101+
102+
* **`microsoft/ps-scriptanalyzer-action`** (PSSA)
103+
* **作用:** 静态分析 PowerShell 代码(Linting)。
104+
* **点评:** 检查你的 ps1 脚本是否符合最佳实践,避免 "脏" 脚本。
105+
* **跨平台矩阵策略 (Matrix Strategy)**
106+
* 这不是一个 Action,而是一种技巧。Pwsh 的强大在于跨平台,你的 CI 应该这样写:
107+
108+
```yaml
109+
strategy:
110+
matrix:
111+
os: [ubuntu-latest, windows-latest, macos-latest]
112+
steps:
113+
- run: pwsh ./myscript.ps1 # 验证你的脚本在所有系统都能跑
114+
```
115+
116+
---
117+
118+
### 💡 总结:精选组合推荐
119+
120+
如果你在维护一个开源项目,这是我的 **"黄金起手式"**:
121+
122+
1. **Go:** `setup-go` + `golangci-lint-action` + `goreleaser-action`
123+
2. **Rust:** `dtolnay/rust-toolchain` + `Swatinem/rust-cache` + `cargo test`
124+
3. **Python:** `setup-python` + `snok/install-poetry` + `ruff` (最近超火的 Rust 写的高速 Python Linter)
125+
4. **Node:** `setup-node` + `pnpm` + `changesets`
126+
127+
**特别提醒:** 尽量使用 Action 的 `vX` 标签(如 `@v4`)而不是 master/main,以防止上游更新破坏你的流水线;同时,对于安全性要求极高的项目,建议锁定具体的 SHA 哈希值。

0 commit comments

Comments
 (0)